<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5993308135121947556</id><updated>2012-01-23T08:29:28.861+02:00</updated><category term='story'/><category term='code'/><category term='release'/><category term='optimization'/><title type='text'>The Narro project</title><subtitle type='html'>This is a blog about Narro, an open source web application that allows online software translation.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-925013097405183697</id><published>2011-11-19T15:14:00.001+02:00</published><updated>2011-11-19T15:19:44.767+02:00</updated><title type='text'>New look based on jQuery themes</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-x0CBx8qcxCE/TsesVFjfLGI/AAAAAAAAMC8/KHYPkiVu8iM/s1600/Narro+with+the+jQuery+redmond+theme.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-x0CBx8qcxCE/TsesVFjfLGI/AAAAAAAAMC8/KHYPkiVu8iM/s400/Narro+with+the+jQuery+redmond+theme.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Since I'm not that fond of designing, I'd rather use someone else's work if possible, so I changed most of Narro's UI to use native jQuery UI elements so that you can apply any jQuery UI theme to change Narro's look.&lt;br /&gt;&lt;br /&gt;What you see above is the redmond theme, currently users can't change the theme, but that would be a nice feature to have.&lt;br /&gt;&lt;br /&gt;Have a look at the &lt;a href="http://jqueryui.com/themeroller/#ffDefault=Lucida+Grande,+Lucida+Sans,+Arial,+sans-serif&amp;amp;fwDefault=bold&amp;amp;fsDefault=1.1em&amp;amp;cornerRadius=5px&amp;amp;bgColorHeader=5c9ccc&amp;amp;bgTextureHeader=12_gloss_wave.png&amp;amp;bgImgOpacityHeader=55&amp;amp;borderColorHeader=4297d7&amp;amp;fcHeader=ffffff&amp;amp;iconColorHeader=d8e7f3&amp;amp;bgColorContent=fcfdfd&amp;amp;bgTextureContent=06_inset_hard.png&amp;amp;bgImgOpacityContent=100&amp;amp;borderColorContent=a6c9e2&amp;amp;fcContent=222222&amp;amp;iconColorContent=469bdd&amp;amp;bgColorDefault=dfeffc&amp;amp;bgTextureDefault=02_glass.png&amp;amp;bgImgOpacityDefault=85&amp;amp;borderColorDefault=c5dbec&amp;amp;fcDefault=2e6e9e&amp;amp;iconColorDefault=6da8d5&amp;amp;bgColorHover=d0e5f5&amp;amp;bgTextureHover=02_glass.png&amp;amp;bgImgOpacityHover=75&amp;amp;borderColorHover=79b7e7&amp;amp;fcHover=1d5987&amp;amp;iconColorHover=217bc0&amp;amp;bgColorActive=f5f8f9&amp;amp;bgTextureActive=06_inset_hard.png&amp;amp;bgImgOpacityActive=100&amp;amp;borderColorActive=79b7e7&amp;amp;fcActive=e17009&amp;amp;iconColorActive=f9bd01&amp;amp;bgColorHighlight=fbec88&amp;amp;bgTextureHighlight=01_flat.png&amp;amp;bgImgOpacityHighlight=55&amp;amp;borderColorHighlight=fad42e&amp;amp;fcHighlight=363636&amp;amp;iconColorHighlight=2e83ff&amp;amp;bgColorError=fef1ec&amp;amp;bgTextureError=02_glass.png&amp;amp;bgImgOpacityError=95&amp;amp;borderColorError=cd0a0a&amp;amp;fcError=cd0a0a&amp;amp;iconColorError=cd0a0a&amp;amp;bgColorOverlay=aaaaaa&amp;amp;bgTextureOverlay=01_flat.png&amp;amp;bgImgOpacityOverlay=0&amp;amp;opacityOverlay=30&amp;amp;bgColorShadow=aaaaaa&amp;amp;bgTextureShadow=01_flat.png&amp;amp;bgImgOpacityShadow=0&amp;amp;opacityShadow=30&amp;amp;thicknessShadow=8px&amp;amp;offsetTopShadow=-8px&amp;amp;offsetLeftShadow=-8px&amp;amp;cornerRadiusShadow=8px"&gt;other jQuery themes&lt;/a&gt; if you don't like the above ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-925013097405183697?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/925013097405183697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=925013097405183697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/925013097405183697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/925013097405183697'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/11/new-look-based-on-jquery-themes.html' title='New look based on jQuery themes'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-x0CBx8qcxCE/TsesVFjfLGI/AAAAAAAAMC8/KHYPkiVu8iM/s72-c/Narro+with+the+jQuery+redmond+theme.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-5459001366121230277</id><published>2011-11-12T11:59:00.001+02:00</published><updated>2011-11-16T08:08:56.540+02:00</updated><title type='text'>What's been done so far</title><content type='html'>&lt;div&gt;&lt;b&gt;Performance improvements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Under the hood, Narro's core is actually the translation memory concept.&lt;br /&gt;If you're not into programming, imagine yourself listening to hundreds of users talking in 80 different languages and trying to relate everything to English.&lt;br /&gt;If you're in programming, imagine 80 texts longer than 255 characters for each English text stored in a database.&lt;br /&gt;It's a continuous challenge.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Feedback&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Getting feedback is important, but gathering feedback is more important. Sure you can have everyone post their worries and wishes on a list, but building on that is a separate task that you need to do before you can act on it.&lt;br /&gt;Arki did a fantastic job getting that done and that helped a lot.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'm not a fan of reading documentation in general, I'd rather just browse it. Jeff wrote the &lt;a href="https://developer.mozilla.org/en/Localizing_with_Narro"&gt;Narro wiki&lt;/a&gt; page on Mdn.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UI improvements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Translate and reviewing (proofreading) are separate actions with separate UIs&lt;br /&gt;Everything needed to work with a Mozilla repository is bundled in a plugin.&lt;br /&gt;UI improvements&lt;br /&gt;Work with several texts as once, scroll as much as you need to have a clear picture of what you're working with.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Core improvements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;HTML support.&lt;br /&gt;SVN and Mercurial commit support.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Server&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;The current server is slow. So slow that sometimes I can't connect through SSH. There's a plan to move Narro to another server, waiting for a &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=698770"&gt;bug to review security&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-5459001366121230277?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/5459001366121230277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=5459001366121230277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5459001366121230277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5459001366121230277'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/11/whats-been-done-so-far.html' title='What&apos;s been done so far'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2884815408013064580</id><published>2011-11-09T09:09:00.003+02:00</published><updated>2011-11-09T09:09:43.499+02:00</updated><title type='text'>Facebook's translation app</title><content type='html'>Just had a look at &lt;a href="http://www.facebook.com/?sk=translations"&gt;Facebook's translation app&lt;/a&gt;. It has some good ideas that should be implemented in Narro:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;big numbers about your progress, e.g. added translations and votes; definitely stimulating&lt;/li&gt;&lt;li&gt;click on the other translation suggestions to copy them in the translation box&lt;/li&gt;&lt;li&gt;good way of using placeholders; really descriptive texts inside them rather than %S or %$1S; but this is determined by the developers that create them&lt;/li&gt;&lt;li&gt;glossary right under the translation box&lt;/li&gt;&lt;li&gt;definitely appreciate the fact that they manage to squeeze the translation app in the middle of the page; good design&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Not so great ideas imho:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; the text comment is placed under the text to translate; although greyed out, I think it may lead to confusion on what to translate, the text or the comment&lt;/li&gt;&lt;li&gt;vote / translate switch; clicking on translate hides the suggestion list and shows the translation box only &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2884815408013064580?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2884815408013064580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2884815408013064580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2884815408013064580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2884815408013064580'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/11/facebooks-translation-app.html' title='Facebook&apos;s translation app'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2149306651852881699</id><published>2011-10-23T21:03:00.001+03:00</published><updated>2011-10-23T21:03:57.383+03:00</updated><title type='text'>TMX export</title><content type='html'>Just added a new column that shows the number of translations for each language, and next to that number, there's a TMX button that allows exporting all the translations in a TMX file. See it &lt;a href="https://l10n.mozilla.org/narro/languages.php?l=vi"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2149306651852881699?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2149306651852881699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2149306651852881699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2149306651852881699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2149306651852881699'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/tmx-export.html' title='TMX export'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1873390725568240773</id><published>2011-10-23T12:46:00.003+03:00</published><updated>2011-10-23T12:47:44.660+03:00</updated><title type='text'>The Mozilla build system inside a Narro plugin</title><content type='html'>I just finished &lt;a href="http://code.google.com/p/narro/source/browse/narro/includes/narro/plugins/NarroMozillaBuild.class.php"&gt;a Narro plugin that sets up the Mozilla build system&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What it actually does on import is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;clones or updates the appropiate Mercurial repository&lt;/li&gt;&lt;li&gt;parses l10n.ini files to build the en-US directory with files to localize&lt;/li&gt;&lt;/ol&gt;and on export:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; if the project is not Firefox, copies the required translation files from the associated Firefox project&lt;/li&gt;&lt;li&gt;builds a languge pack&lt;/li&gt;&lt;li&gt;runs compare locales and interprets the output to build Narro links to the contexts with errors or warnings&lt;/li&gt;&lt;/ol&gt;Let's get into details. Here's how the project edit page would look in Narro for a Mozilla project with the Mozilla Build plugin activated:&lt;br /&gt;&lt;br /&gt;&lt;span id="goog_675392014"&gt;&lt;/span&gt;&lt;span id="goog_675392015"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-9ccjiNVWAbQ/TqPe1jrYgDI/AAAAAAAAL6k/gHvM6AVhUlE/s1600/Narro+project+with+Mozilla+build+plugin+activated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-9ccjiNVWAbQ/TqPe1jrYgDI/AAAAAAAAL6k/gHvM6AVhUlE/s640/Narro+project+with+Mozilla+build+plugin+activated.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You need the mercurial path to the proper repository. Common options are comm-central, comm-aurora, comm-beta, comm-release and mozilla-central, mozilla-aurora, mozilla-beta, mozilla-release.&lt;br /&gt;&lt;br /&gt;You need to specify the internal application type, browser (Firefox), suite (Seamonkey), mobile (Fennec/Firefox Mobile), mail (Thunderbird), calendar (Sunbird).&lt;br /&gt;&lt;br /&gt;Also need the release name, this is empty for central, aurora, beta or release. This is used to find specific l10n.ini files, e.g. l10n-aurora.ini.&lt;br /&gt;&lt;br /&gt;If the project is Seamonkey, Sunbird, Thunderbird or Fennec/Firefox Mobile, then you need some folders from Firefox, that's why you need to do this association here.&lt;br /&gt;&lt;br /&gt;It makes no sense translating dom and toolkit folders again if you already did that in Firefox.&lt;br /&gt;&lt;br /&gt;Now here's how the export page looks after an export, if the Mozilla Build plugin is activated:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_4meRSMg2V4/TqPhrC3oatI/AAAAAAAAL6s/JvNOfys9S14/s1600/Narro+export+project+page+with+Mozilla+build+plugin+activated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-_4meRSMg2V4/TqPhrC3oatI/AAAAAAAAL6s/JvNOfys9S14/s640/Narro+export+project+page+with+Mozilla+build+plugin+activated.png" width="624" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You can see at the bottom the output of compare locales, with a link to the text to correct.&lt;br /&gt;Also, you can see the xpi language pack as well.&lt;br /&gt;&lt;br /&gt;What's happening in the background is quite complex and very&amp;nbsp;platform&amp;nbsp;dependent (Fedora/Centos/Debian/Ubuntu only supported).&lt;br /&gt;&lt;br /&gt;You need to have make, autoconf-2.13, python, easy_install installed on the server.&lt;br /&gt;&lt;br /&gt;But the result is quite amazing, since you can get an xpi language pack directly from the browser, no Mercurial, no build commands, no terminal, just the browser.&lt;br /&gt;&lt;br /&gt;I'm currently converting all l10n.mozilla.org to use this plugin, so expect possible problems today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1873390725568240773?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1873390725568240773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1873390725568240773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1873390725568240773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1873390725568240773'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/mozilla-build-system-inside-narro.html' title='The Mozilla build system inside a Narro plugin'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-9ccjiNVWAbQ/TqPe1jrYgDI/AAAAAAAAL6k/gHvM6AVhUlE/s72-c/Narro+project+with+Mozilla+build+plugin+activated.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1208827372978309383</id><published>2011-10-22T13:28:00.001+03:00</published><updated>2011-10-22T13:28:30.001+03:00</updated><title type='text'>Goodbye ZendFramework!</title><content type='html'>I was using ZendFramework for OpenID, Caching and Session handling. I had to keep ~700 files for this, which was too much, so I just removed this dependency and added a lightweight library for OpenID support, used QCubed file caching and standard session handling. Eventually this brought more speed and less files, so it's a good thing.&lt;br /&gt;&lt;br /&gt;Also, as a bonus, you can now authenticate with your Google account as well. Authenticating with OpenID or Google leads to a pretty ugly user name, so that takes me to adding a real name property to users.&lt;br /&gt;&lt;br /&gt;Revisited form states since I've seen many errors reported on that. If you leave the page open with a formstate for a while and come back and your session expired, then the form state is invalid. Previously this lead to an exception and a error message to the user. This was replaced by a javascript alert message and a redirection to the project list, so that the user can start again with minimum disruption.&lt;br /&gt;&lt;br /&gt;Oh yes, and if you're wondering how Narro looks, just check this blog's background ;^)&lt;br /&gt;&lt;br /&gt;Last but not least, I really appreciate the patience that people have in helping me to fix bugs and am glad that so many people find my work useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1208827372978309383?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1208827372978309383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1208827372978309383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1208827372978309383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1208827372978309383'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/goodbye-zendframework.html' title='Goodbye ZendFramework!'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-8158414847557624988</id><published>2011-10-13T09:45:00.000+03:00</published><updated>2011-10-22T13:28:39.363+03:00</updated><title type='text'>47 issues until version 2</title><content type='html'>I managed to do some cleanup in the issue tracker and scheduled the issues for version 2, 2.1 and 3. There are 47 issues for version 2, I have to fix all those before I release version 2 to the public.&lt;br /&gt;&lt;br /&gt;More details here: &lt;a href="http://code.google.com/p/narro/issues/list?can=2&amp;amp;q=label%3AVersion-2"&gt;http://code.google.com/p/narro/issues/list?can=2&amp;amp;q=label%3AVersion-2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-8158414847557624988?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/8158414847557624988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=8158414847557624988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8158414847557624988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8158414847557624988'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/47-issues-until-version-2.html' title='47 issues until version 2'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1815627116209466311</id><published>2011-10-11T22:56:00.002+03:00</published><updated>2011-10-11T22:56:32.732+03:00</updated><title type='text'>Vagrant file for a development version of Narro</title><content type='html'>I wrote my first Vagrantfile. If you don't know what vagrant is, you might want to read &lt;a href="http://vagrantup.com/"&gt;vagrantup.com&lt;/a&gt; first.&lt;br /&gt;&lt;br /&gt;The idea is to get a vanilla Narro running in a virtual machine so you can easily test it. It was a good exercise to find Narro dependencies.&lt;br /&gt;&lt;br /&gt;It's really easy to write the Vagrantfile and manifests, but it was a pain to get the image running until I read on the &lt;a href="https://github.com/mitchellh/vagrant/issues/455"&gt;issue tracker&lt;/a&gt; that there's a problem with the network. So I choose to boot with the GUI on and if needed I &lt;b&gt;login with vagrant/vagrant&lt;/b&gt; and do a &lt;b&gt;sudo /etc/init.d/./networking restart&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;The archive with the Vagrantfile, manifests and instructions is &lt;a href="http://code.google.com/p/narro/downloads/detail?name=narro-vagrant.tar.gz&amp;amp;can=2&amp;amp;q=#makechanges"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll keep updating if needed.&lt;br /&gt;&lt;br /&gt;Next step is to trim down the list of reported issues, then a 2.0 release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1815627116209466311?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1815627116209466311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1815627116209466311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1815627116209466311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1815627116209466311'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/vagrant-file-for-development-version-of.html' title='Vagrant file for a development version of Narro'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6703714387322064564</id><published>2011-10-07T22:52:00.001+03:00</published><updated>2011-10-07T22:52:24.454+03:00</updated><title type='text'>Support for command keys added and wrapping up for a release</title><content type='html'>I've just added support for command keys in Narro. This will save you from translating about ~100 one letter texs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lFbPgZZ-cIc/To9VtmqMBJI/AAAAAAAAL2Q/rcXmAUtZL_A/s1600/command+keys+and+access+keys+in+Narro.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://3.bp.blogspot.com/-lFbPgZZ-cIc/To9VtmqMBJI/AAAAAAAAL2Q/rcXmAUtZL_A/s320/command+keys+and+access+keys+in+Narro.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;I also reduced the number of filters found on top of the translate page and replace them with an advanced search button that makes them visible.&lt;br /&gt;&lt;br /&gt;2.0 is getting pretty stable, so next I was working on installing Narro using &lt;a href="http://vagrantup.com/"&gt;vagrant&lt;/a&gt;. Not that easy, sometimes vagrant won't up, so I found it easier for now to just boot the virtual machine with VirtualBox and work from there.&lt;br /&gt;&lt;br /&gt;Here are the steps that you need to do to get Narro running on the &lt;a href="http://files.vagrantup.com/lucid32.box"&gt;lucid32 box&lt;/a&gt;&lt;code&gt;:&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;apt-get update&lt;br /&gt;&lt;br /&gt;apt-get install php5 php5-cli php5-pspell php5-gd php5-mysql apache2 mercurial mysql-server&lt;br /&gt;&lt;br /&gt;mysql -u root&lt;br /&gt;&lt;br /&gt;  &lt;i&gt;CREATE DATABASE `narro` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;&lt;br /&gt;  CREATE USER 'narro'@'localhost';&lt;br /&gt;  GRANT USAGE ON * . * TO 'narro'@'localhost' WITH MAX_QUERIES_PER_HOUR 0       MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;&lt;br /&gt;  GRANT ALL PRIVILEGES ON `narro` . * TO 'narro'@'localhost' WITH GRANT OPTION;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;hg clone http://code.google.com/p/narro /tmp/narro&lt;br /&gt;mv /tmp/narro/narro /var/www/narro&lt;br /&gt;rm -rf /tmp/narro&lt;br /&gt;mkdir -m 777 /var/www/narro/data&lt;br /&gt;chmod 777 /var/www/narro/locale&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;mysql -u root -D narro &amp;lt; /var/www/narro/narro.sql&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the default Vagrant file uncomment:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;config.vm.network "33.33.33.10"&lt;br /&gt;config.vm.forward_port "http", 80, 8080&lt;/blockquote&gt;&lt;br /&gt;After this you should be able to access Narro at http://33.33.33.1:8080/narro&lt;br /&gt;Now I just need to create a Vagrant file for all these operations.&lt;br /&gt;&lt;br /&gt;Suggestions or help is welcome.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6703714387322064564?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6703714387322064564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6703714387322064564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6703714387322064564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6703714387322064564'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/support-for-command-keys-added-and.html' title='Support for command keys added and wrapping up for a release'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-lFbPgZZ-cIc/To9VtmqMBJI/AAAAAAAAL2Q/rcXmAUtZL_A/s72-c/command+keys+and+access+keys+in+Narro.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1128548320313397106</id><published>2011-10-06T22:35:00.003+03:00</published><updated>2011-10-06T22:35:51.723+03:00</updated><title type='text'>Followup on Mozilla access keys</title><content type='html'>So I've managed to somehow reduce the access key - label link to these cases for Firefox:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^(.*)\.accesskey$/' =&amp;gt; array('.label', '.message', '.title', '.button', 'placeholder', ''),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^(.*)Access[kK]ey$/' =&amp;gt; array('Label', 'Text', ''),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^(.*)\.accessKey$/' =&amp;gt; array('.label', '.message', '.title', ''),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^(.*)\_accesskey$/' =&amp;gt; array(''),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^(.*)Accesskey$/' =&amp;gt; array(''),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^(.*)\.access$/' =&amp;gt; array('', 'Button'),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '/^accesskey\-(.*)$/' =&amp;gt; array('button-')&lt;br /&gt;&lt;br /&gt;There still are 79 command keys and 98 other one letter texts; some access keys some settings.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Translating 177 one letter texts is no fun, so there's still some work to do to on these.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1128548320313397106?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1128548320313397106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1128548320313397106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1128548320313397106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1128548320313397106'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/followup-on-mozilla-access-keys.html' title='Followup on Mozilla access keys'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1306264213805417562</id><published>2011-10-06T12:45:00.002+03:00</published><updated>2011-10-06T12:49:05.486+03:00</updated><title type='text'>Access keys revisited</title><content type='html'>Today I'm working on developing the access key detection to make sure I'm catching almost every access key if not all.&lt;br /&gt;&lt;br /&gt;So Mozilla uses a separate entity to assign an access key to a text:&lt;br /&gt;&lt;br /&gt;file.label=File&lt;br /&gt;file.accesskey=F&lt;br /&gt;&lt;br /&gt;Where in gettext you have &amp;amp;File or _File&lt;br /&gt;&lt;br /&gt;The problem is that there are inconsistencies, so you have to write code to cope with every situation.&lt;br /&gt;&lt;br /&gt;There still is the problem of command keys which are something different, e.g.:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;u&gt;O&lt;/u&gt;pen Ctrl+F&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Here O is an access key, F is a command key.&lt;/div&gt;&lt;div style="text-align: left;"&gt;You can edit the access key in Narro as you wish, see the screenshot below. However, to make it easier, there are some automated processes to select that so you don't have to worry about that.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-N5VlSRtsEcA/To14gMnhFPI/AAAAAAAAL2A/pWz79WH4X7g/s1600/Narro+access+key+editor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-N5VlSRtsEcA/To14gMnhFPI/AAAAAAAAL2A/pWz79WH4X7g/s1600/Narro+access+key+editor.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Not sure if I should add a box like that for the command key, will think about it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1306264213805417562?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1306264213805417562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1306264213805417562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1306264213805417562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1306264213805417562'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/access-keys-revisited.html' title='Access keys revisited'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-N5VlSRtsEcA/To14gMnhFPI/AAAAAAAAL2A/pWz79WH4X7g/s72-c/Narro+access+key+editor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2633224819981509795</id><published>2011-10-05T08:54:00.004+03:00</published><updated>2011-10-05T09:14:30.221+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Where does performance come from</title><content type='html'>First of all, &lt;span style="font-weight: bold;"&gt;the machine has to be good&lt;/span&gt;. You may be dealing with millions of rows in a table with indexes. Don't install it on your laptop.&lt;br /&gt;&lt;br /&gt;Here's a comparison between two machines with the same database (+4 million rows in table):&lt;br /&gt;&lt;br /&gt;A virtual machine: &lt;a href="https://l10n.mozilla.org/narro/translate.php?l=vi&amp;amp;p=&amp;amp;f=&amp;amp;t=1&amp;amp;s=&amp;amp;o=&amp;amp;h=1&amp;amp;m=10&amp;amp;i=0#i"&gt;https://l10n.mozilla.org/narro/translate.php?l=vi&amp;amp;p=&amp;amp;f=&amp;amp;t=1&amp;amp;s=&amp;amp;o=&amp;amp;h=1&amp;amp;m=10&amp;amp;i=0#i&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First page load: 9 seconds&lt;br /&gt;Average load when scrolling down: 10 seconds&lt;br /&gt;&lt;br /&gt;Cheap shared hosting: &lt;a href="http://narro.alexxed.com/lmo2/translate.php?l=vi&amp;amp;p=28&amp;amp;f=&amp;amp;t=1&amp;amp;s=&amp;amp;o=&amp;amp;h=1&amp;amp;m=10&amp;amp;i=0"&gt;http://narro.alexxed.com/lmo2/translate.php?l=vi&amp;amp;p=28&amp;amp;f=&amp;amp;t=1&amp;amp;s=&amp;amp;o=&amp;amp;h=1&amp;amp;m=10&amp;amp;i=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First page load: 3 seconds&lt;br /&gt;Average load when scrolling down: 2 seconds&lt;br /&gt;&lt;br /&gt;If you're thinking of having multiple active languages and huge translation projects, it might be best to have &lt;span style="font-weight: bold;"&gt;separate installations per language&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;What I can still try and will try to make it better is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;have a table for each language rather than all languages in a table&lt;/li&gt;&lt;li&gt;play with indexes and see what works best&lt;br /&gt;&lt;/li&gt;&lt;li&gt;try PostgreSQL&lt;/li&gt;&lt;/ul&gt;Query ran for the tests above:&lt;pre&gt;&lt;code class="jush-sql"&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;&lt;a href="http://dev.mysql.com/doc/mysql/en/select.html"&gt;SELECT&lt;/a&gt;&lt;br /&gt;*&lt;br /&gt;&lt;a&gt;FROM&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;narro_context_info&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;AS&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t0&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a&gt;LEFT&lt;/a&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/join.html"&gt;JOIN&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;narro_context&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;AS&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;ON&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t0&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;context_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;context_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;&lt;br /&gt;LEFT&lt;/a&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/join.html"&gt;JOIN&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;narro_file&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;AS&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t2&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;ON&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;file_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t2&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;file_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;&lt;br /&gt;LEFT&lt;/a&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/join.html"&gt;JOIN&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;narro_text&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;AS&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t3&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;ON&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;text_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t3&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;text_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;&lt;br /&gt;LEFT&lt;/a&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/join.html"&gt;JOIN&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;narro_project&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;AS&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t4&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;ON&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;project_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t4&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;project_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;&lt;br /&gt;LEFT&lt;/a&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/join.html"&gt;JOIN&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;narro_suggestion&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;AS&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t5&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; &lt;a&gt;ON&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t0&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;valid_suggestion_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t5&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;suggestion_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a&gt;WHERE&lt;/a&gt; (&lt;br /&gt;   (&lt;br /&gt;   &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t0&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;language_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-num"&gt;&lt;span class="jush-op"&gt;60&lt;/span&gt;&lt;/span&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/logical-operators.html#operator_and"&gt;AND&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;&lt;br /&gt;   `&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;active&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; != &lt;span class="jush-num"&gt;&lt;span class="jush-op"&gt;0&lt;/span&gt;&lt;/span&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/logical-operators.html#operator_and"&gt;AND&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span&gt;&lt;span&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t2&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;active&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; != &lt;span class="jush-num"&gt;&lt;span class="jush-op"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span&gt;&lt;span&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;) &lt;a href="http://dev.mysql.com/doc/mysql/en/logical-operators.html#operator_and"&gt;AND&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span&gt;&lt;span&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t1&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;project_id&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-num"&gt;&lt;span class="jush-op"&gt;28&lt;/span&gt;&lt;/span&gt; &lt;a href="http://dev.mysql.com/doc/mysql/en/logical-operators.html#operator_and"&gt;AND&lt;/a&gt; &lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span&gt;&lt;span&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="jush-sql"&gt;&lt;span class="jush"&gt;&lt;span class="jush-sql_code"&gt;&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;t0&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt;.&lt;span class="jush-bac"&gt;&lt;span class="jush-op"&gt;`&lt;/span&gt;has_suggestions&lt;span class="jush-op"&gt;`&lt;/span&gt;&lt;/span&gt; = &lt;span class="jush-num"&gt;&lt;span class="jush-op"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;) &lt;a&gt;&lt;br /&gt;LIMIT&lt;/a&gt; &lt;span class="jush-num"&gt;&lt;span class="jush-op"&gt;20&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Been there, done that ? Your comments would help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2633224819981509795?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2633224819981509795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2633224819981509795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2633224819981509795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2633224819981509795'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/10/where-does-performance-come-from.html' title='Where does performance come from'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-4089856842592359310</id><published>2011-09-27T19:17:00.003+03:00</published><updated>2011-09-27T19:48:08.320+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='story'/><title type='text'>How did I (almost) automate Mozilla's localization process using Narro</title><content type='html'>Initially, I do these manually:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;hg clone [mozilla-repo] mozilla-repo&lt;br /&gt;&lt;/li&gt;&lt;li&gt;setup mozilla-repo/.mozconfig file and create mozilla-repo/../l10n and mozilla-repo/../build/&lt;/li&gt;&lt;li&gt;depending on the server I might also need to adjust some environment variables&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;After this is done, luckily with aurora and beta we have stable branches so I just need to pull and update. There's a scheduled process that runs&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;hg pull&lt;/li&gt;&lt;li&gt;hg update -C&lt;/li&gt;&lt;li&gt;python client.py checkout (for thunderbird / seamonkey )&lt;br /&gt;&lt;/li&gt;&lt;li&gt;make -sf client.mk configure // not launching the whole build process, just getting the files needed to build a language pack&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;After this process runs, there's a Narro import process that processes the en-US files and imports the files that are changed since the last import for all projects, all languages. This basically takes formats like dtd, ini, properties, html, po and parses them to allow a Narro user to translate them by just entering the translation in a textarea.&lt;br /&gt;&lt;br /&gt;Each time a user exports a project, an attempt to build a language pack is made. To do this, I do:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cd mozilla-repo/../build/[component_name]/locales&lt;/li&gt;&lt;li&gt;make -s langpack-xx&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It would be a lot easier if I didn't have to pull the entire repository to build a simple zip file. No easy way around it, too many variables. This works and helps with testing.&lt;br /&gt;&lt;br /&gt;Now if the Narro user is satisfied, can choose to commit to Mercurial. I managed to include that in Narro, although it's quite difficult since you have to commit with your SSH key. So you can do that in Narro too.&lt;br /&gt;&lt;br /&gt;After this, the next step is the Mozilla dashboard and a nightly build. The Mozilla dashboard uses a python script, compare-locales that does some general quality checks that I wouldn't want to reproduce in PHP. So I can run compare-locales myself and not wait for the dashboard. This is quite complicated because compare-locales wants as parameters the directories that need to be translated, to have those automatically I would need to search for l10n.ini files and parse them. Right now I hardcoded them for the major projects (Firefox, Thunderbird) and it works fine.&lt;br /&gt;&lt;br /&gt;Now I have to wait for the next nightly build, and I'll have that as a link on the project list thanks to a Narro plugin.&lt;br /&gt;&lt;br /&gt;Once the nightly was tested, I can go to the Mozilla Dashboard and sign off with my latest Mercurial commit.&lt;br /&gt;&lt;br /&gt;So the only thing that is not automated is the sign off; that's doable too, but not a priority.&lt;br /&gt;&lt;br /&gt;What this complicated process gets me is a Narro instance that automatically picks up new texts and changes, I or whoever can translate them, export them and commit them without the need of having anything else than a browser.&lt;br /&gt;&lt;br /&gt;Just having the possibility to translate, export and get a language pack that easy is gold to any newcomer.&lt;br /&gt;&lt;br /&gt;Now I'm trying to remove the manual part from this process so you can add a new project from Narro without having to go into the console. Even if it's a one time process and it doesn't change that often.&lt;br /&gt;&lt;br /&gt;Oh, don't think that other localization projects are different just because they use gettext. You'll always have at least the problem of getting used to SVN, CVS, Mercurial, bugtracker or whatever before you commit your translations. I can't change each project. But building a tool that can deal with these situations is something that I need and use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-4089856842592359310?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/4089856842592359310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=4089856842592359310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/4089856842592359310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/4089856842592359310'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/09/how-did-i-almost-automate-mozillas.html' title='How did I (almost) automate Mozilla&apos;s localization process using Narro'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6245768652781271934</id><published>2011-07-29T21:13:00.003+03:00</published><updated>2011-07-29T21:24:52.218+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>A preview of the next version</title><content type='html'>There's been some heavy rewriting going on.&lt;br /&gt;&lt;br /&gt;After you log in, you'll have all the permissions, so feel free to experiment, but with caution and expect failures.&lt;br /&gt;&lt;br /&gt;You can pick your favourite Firefox extension, add a project from the project list and and use the xpi, as a source for texts and for translation (web link, or upload, whatever).&lt;br /&gt;&lt;br /&gt;The speed is really improved and the translation process is really easier now. You just open the translation page, start translating and the translation is saved automatically as soon as you move to the next text. You can use the tab key to move forward.&lt;br /&gt;&lt;br /&gt;Use scroll to load more texts. Or press the more button.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://narro.alexxed.com/narro/translate.php?l=ro&amp;amp;p=10&amp;amp;f=&amp;amp;t=1&amp;amp;s=&amp;amp;o=&amp;amp;h=1&amp;amp;m=10&amp;amp;i=0#i"&gt;http://narro.alexxed.com/narro/translate.php?l=ro&amp;amp;p=10&amp;amp;f=&amp;amp;t=1&amp;amp;s=&amp;amp;o=&amp;amp;h=1&amp;amp;m=10&amp;amp;i=0#i&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6245768652781271934?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6245768652781271934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6245768652781271934' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6245768652781271934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6245768652781271934'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/07/preview-of-next-version.html' title='A preview of the next version'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-7722902825226689865</id><published>2011-06-29T00:06:00.003+03:00</published><updated>2011-06-29T00:14:59.788+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>It's too complicated</title><content type='html'>I'm currently experimenting with important UI changes meant to simplify things. The ideas so far are:&lt;br /&gt;&lt;br /&gt;- reduce the number of pages to the barely minimum; only one page for translating&lt;br /&gt;- drop the pagination and load new content when scrolling down; it feels more natural to the user&lt;br /&gt;- show only the original text and a text input for translating it; everything else only on demand&lt;br /&gt;&lt;br /&gt;Any ideas or complaints are warmly welcomed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-7722902825226689865?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/7722902825226689865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=7722902825226689865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7722902825226689865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7722902825226689865'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/06/its-too-complicated.html' title='It&apos;s too complicated'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2996069928490213752</id><published>2011-05-26T08:29:00.002+03:00</published><updated>2011-05-26T08:32:05.506+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='story'/><title type='text'>Going to Mozilla Balkans Community Meet-up in Sofia</title><content type='html'>Thanks to Mozilla, I'll be in Sofia between 3 and 6 of June attending the &lt;a href="https://wiki.mozilla.org/Balkans/Events:2011/Sofia"&gt;Mozilla Balkans Community Meet-up&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2996069928490213752?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2996069928490213752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2996069928490213752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2996069928490213752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2996069928490213752'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/05/going-to-mozilla-balkans-community-meet.html' title='Going to Mozilla Balkans Community Meet-up in Sofia'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-5220503819147416150</id><published>2011-05-09T06:52:00.004+03:00</published><updated>2011-05-09T07:20:26.657+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Why do you have to go and make things so complicated?</title><content type='html'>Remember, localizers are usually volunteers. When I started Narro, my idea was to make their life easier by allowing them to receive translations from anyone and to pull/push translations without knowing SVN, Mercurial, or any other technical stuff.&lt;br /&gt;&lt;br /&gt;The idea setup would be:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The localizer gets the translation files through Narro import&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Translation begins (offline or online)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The localizer pushes the translation files through Narro export&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;And no, it's not that I'd like to introduce a new tool instead of running svn commit, it's just that I'd like to spare people of the nightmares of merging and maintaining branches when all they want to do is translate.&lt;br /&gt;&lt;br /&gt;The current Mozilla setup is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pull the entire Mozilla repository (&amp;gt; 500MB)&lt;/li&gt;&lt;li&gt;Scan its directory for localization files and build through symlinks a folder structure that resembles the one that localizers need to push in their repository&lt;/li&gt;&lt;li&gt;Run an import from that folder&lt;/li&gt;&lt;li&gt;Translation begins&lt;/li&gt;&lt;li&gt;Translation is exported in XPI format for testing purposes&lt;/li&gt;&lt;li&gt;There's a script made by Axel Hecht, compare-locales that does some checks for validity, because translations can really break the product. To help, I'm running that after every export and post a link to a diff file that contains links to the texts that need fixing&lt;/li&gt;&lt;li&gt;Translation is exported in the structure that should be comitted to Mercurial&lt;/li&gt;&lt;li&gt;The localizer needs to have Mercurial through SSH with key authentication set up&lt;/li&gt;&lt;li&gt;The localizer commits the structure exported from Narro (hg pull .../xx-XX.zip &amp;amp;&amp;amp; unzip xx-XX.zip &amp;amp;&amp;amp; hg commit &amp;amp;&amp;amp; hg push)&lt;/li&gt;&lt;li&gt;The localizer checks the tinderbox for any build failures&lt;/li&gt;&lt;li&gt;The localizer checks the dashboard for any problems detected by compare-locales&lt;/li&gt;&lt;li&gt;The localizer does a signoff (pushes a button for the revision he wants to release) in the dashboard&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I may have forgotten some steps, but obviously this is not the perfect setup. I'm keen on helping making things easier as I'm a localizer myself but there are some blockers here:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I can commit via Narro, but that causes problems because several localizers commit with the same account. I can't let localizers commit with their credentials because that would mean uploading their private SSH key and that defeats the purpose of a SSH key. From my experience, getting rid of that is a real advantage as you often want to fix only a few strings while you're on the road and don't feel like hg pull, hg commit, hg push or don't have Mercurial installed or your SSH key set up.&lt;/li&gt;&lt;li&gt;I don't have access only to the localization files. I have to pull the entire repository.&lt;/li&gt;&lt;li&gt;To build a language pack I need the whole repository.&lt;/li&gt;&lt;/ol&gt;Oh, there are the web pages as well. Fortunately I'm close to handling those in Narro as well.&lt;br /&gt;&lt;br /&gt;Now don't think that Mozilla is the only software that has this complicated setup. But this localizer tool should be able to cope even with this situation, because it's not a perfect world we live in. It's a challenge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-5220503819147416150?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/5220503819147416150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=5220503819147416150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5220503819147416150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5220503819147416150'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2011/05/why-do-you-have-to-go-and-make-things.html' title='Why do you have to go and make things so complicated?'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-829010261754538434</id><published>2010-09-23T20:28:00.003+03:00</published><updated>2010-09-23T20:43:43.019+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Scale up</title><content type='html'>Narro was designed with one pair of languages in mind. And at that time, running an import on a big project on a modern computer for half an hour was acceptable. The only performance goal was to have a maximum page loading time of 1 second. There was no goal set for the import process.&lt;br /&gt;&lt;br /&gt;Back then: 1 target language * 1 big project * 1/2 hours&lt;br /&gt;&lt;br /&gt;Times are changing and the instance hosted on Mozilla grew to 61 languages. For each language I run an import on 4 big projects.&lt;br /&gt;&lt;br /&gt;Right now: 61 target languages * 4 big projects * 1/2 hours&lt;br /&gt;&lt;br /&gt;As you see, running the import process in these conditions is almost impossible, so the much postponed step of optimizing the code is absolutely necessary right now.&lt;br /&gt;&lt;br /&gt;Note that the import process is running in background and eating up all the CPU power available on the server.&lt;br /&gt;&lt;br /&gt;Fortunately, the code is ready for such optimizations which are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cache database results whenever possible&lt;/li&gt;&lt;li&gt;do stuff only when necessary&lt;/li&gt;&lt;li&gt;use regular expressions only when really needed&lt;/li&gt;&lt;/ul&gt;So that's what I'll be working on before doing any release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-829010261754538434?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/829010261754538434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=829010261754538434' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/829010261754538434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/829010261754538434'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2010/09/scale-up.html' title='Scale up'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2816897190742952909</id><published>2010-04-22T09:53:00.004+03:00</published><updated>2010-04-22T10:35:00.624+03:00</updated><title type='text'>Is there anyone outhere ?</title><content type='html'>I know it's been over an year, but development is slowly but surely moving forward.&lt;br /&gt;There's still a hurdle to pass, and that is building an upgrade procedure from 0.9.4, last stable to the upcoming 1.0.&lt;br /&gt;&lt;br /&gt;Among the goodies added on the frontend is translations in lists aka mass translation and the ability to import and export from various sources, like another project, a directory, upload, Mercurial, SVN, and so on.&lt;br /&gt;&lt;br /&gt;To quote someone famous, version 1.0 will be ready when it's ready, but this post is here to say that development will be accelerated in the next weeks.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I2bh26gyfUU/S8_7xKh8JFI/AAAAAAAAIdM/B6-2TqeNwgQ/s1600/Captur%C4%83-ecran-Texte+din+cadrul+proiectului+%E2%80%9EFirefox+3.5%E2%80%9D+-+Mozilla+Firefox.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 260px;" src="http://2.bp.blogspot.com/_I2bh26gyfUU/S8_7xKh8JFI/AAAAAAAAIdM/B6-2TqeNwgQ/s320/Captur%C4%83-ecran-Texte+din+cadrul+proiectului+%E2%80%9EFirefox+3.5%E2%80%9D+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5462861695082570834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I2bh26gyfUU/S8_7spMbTkI/AAAAAAAAIdE/uMB2ibhqliY/s1600/Captur%C4%83-ecran-Firefox+3.5+::+Import+-+Mozilla+Firefox.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 296px;" src="http://3.bp.blogspot.com/_I2bh26gyfUU/S8_7spMbTkI/AAAAAAAAIdE/uMB2ibhqliY/s320/Captur%C4%83-ecran-Firefox+3.5+::+Import+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5462861617414491714" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2816897190742952909?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2816897190742952909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2816897190742952909' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2816897190742952909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2816897190742952909'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2010/04/is-there-anyone-outhere.html' title='Is there anyone outhere ?'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_I2bh26gyfUU/S8_7xKh8JFI/AAAAAAAAIdM/B6-2TqeNwgQ/s72-c/Captur%C4%83-ecran-Texte+din+cadrul+proiectului+%E2%80%9EFirefox+3.5%E2%80%9D+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-4189319493014405315</id><published>2009-04-07T14:37:00.004+03:00</published><updated>2009-04-07T15:12:16.412+03:00</updated><title type='text'>Works for me</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/Sds7YwkPkyI/AAAAAAAAEwc/E0S0vLDUcm4/s1600-h/Narro+-+development+sneak+peak.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 169px;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/Sds7YwkPkyI/AAAAAAAAEwc/E0S0vLDUcm4/s400/Narro+-+development+sneak+peak.png" alt="" id="BLOGGER_PHOTO_ID_5321912681208189730" border="0" /&gt;&lt;/a&gt;There's a major release coming up, I can't say just yet if it will be 1.0, but that's where I'm heading at. You can see some progress in the image above.&lt;br /&gt;&lt;br /&gt;I'm trying to simplify the user interface and the navigation. I'll introduce tabs where possible and remove options that are rarely used. I'm also working on introducing some basic functionalities that were missing so far, like deleting users and projects.&lt;br /&gt;&lt;br /&gt;Better import and export is in the works as well, because it's still not working out of the box for everyone who installs Narro.&lt;br /&gt;&lt;br /&gt;Once the existing functionality will be cleaned up, I'll address the most important issues from the issue tracker and bring out a release.&lt;br /&gt;&lt;br /&gt;In conclusion, &lt;span style="font-style: italic;"&gt;works for me&lt;/span&gt; is just not enough and works for everyone means just more work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-4189319493014405315?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/4189319493014405315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=4189319493014405315' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/4189319493014405315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/4189319493014405315'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/04/works-for-me.html' title='Works for me'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/Sds7YwkPkyI/AAAAAAAAEwc/E0S0vLDUcm4/s72-c/Narro+-+development+sneak+peak.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6598189139391765497</id><published>2009-03-19T14:45:00.005+02:00</published><updated>2009-03-19T15:00:00.125+02:00</updated><title type='text'>Translations of similar texts and other news</title><content type='html'>The project list should show only what can be worked on, that is translations in progress. If you want you can select which projects to see.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/ScI_EFmrJKI/AAAAAAAAEvc/1uUkA6jtZCE/s1600-h/Narro+-+filter+project+list+and+show+last+activity.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 124px;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/ScI_EFmrJKI/AAAAAAAAEvc/1uUkA6jtZCE/s400/Narro+-+filter+project+list+and+show+last+activity.png" alt="" id="BLOGGER_PHOTO_ID_5314879849707021474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looking at some projects that I'm not translating, I always wondered if somebody is actively translating there. Well, now I know, on the project list I can see when was the last activity.&lt;br /&gt;&lt;br /&gt;Another thing that I didn't like was that If an original text changed in form of adding or removing a punctuation sign, I had an untranslated text again. So I went back to the days where I had an index to search for similar texts.&lt;br /&gt;&lt;br /&gt;Better yet, if yhere's no translation, the translations of similar texts appear automatically. You can copy them and adjust them before translating.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/ScI-2EOn_hI/AAAAAAAAEvU/C3wjiZig0rQ/s1600-h/Narro+-+Show+translations+of+similar+texts.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 178px;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/ScI-2EOn_hI/AAAAAAAAEvU/C3wjiZig0rQ/s400/Narro+-+Show+translations+of+similar+texts.png" alt="" id="BLOGGER_PHOTO_ID_5314879608819547666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Other things planned in the near future are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;storing and using a word count value for texts and translations&lt;/li&gt;&lt;li&gt;adding project settings, like ignoring some files from templates, adding a custom header for gettext files and so on&lt;/li&gt;&lt;li&gt;split the Manage page into smaller pages&lt;/li&gt;&lt;/ul&gt;Several people have tried to install Narro on shared hosting environments or Windows machines and failed to do so. A better installation procedure is an ongoing effort on my side and several people have helped so far. The versioning started with 0.9 because I do not see Narro as an application that anyone can easily install yet. If you're not a technical person, you should wait for 1.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6598189139391765497?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6598189139391765497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6598189139391765497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6598189139391765497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6598189139391765497'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/03/translations-of-similar-texts-and-other.html' title='Translations of similar texts and other news'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/ScI_EFmrJKI/AAAAAAAAEvc/1uUkA6jtZCE/s72-c/Narro+-+filter+project+list+and+show+last+activity.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-5751019325583731366</id><published>2009-03-14T11:51:00.004+02:00</published><updated>2009-03-14T12:16:19.160+02:00</updated><title type='text'>1 year of open translations</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I2bh26gyfUU/SbuAyD1lEkI/AAAAAAAAEuo/mc5cVuBE-ps/s1600-h/Narro+-+1+year+old.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 258px;" src="http://3.bp.blogspot.com/_I2bh26gyfUU/SbuAyD1lEkI/AAAAAAAAEuo/mc5cVuBE-ps/s400/Narro+-+1+year+old.png" alt="" id="BLOGGER_PHOTO_ID_5312981782925480514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Time sure flies and I forgot that &lt;a href="http://code.google.com/p/narro/source/detail?r=8"&gt;Narro is one year old officially&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It all started more than a year ago when after years of translating software on voluntary basis I realised the obvious. I was doing a job that anyone could do if they had the necessary tools and the knowledge to use them.  So I pursued my dream of creating the tool that needs no tools to translate.&lt;br /&gt;&lt;br /&gt;Thinking in such a way leads to a lot of hard to appreciate functionality under the hood. There's no documentation and almost no samples of working procedures. If you're using Narro and like using it, maybe you would consider recording a video of using it. Drop the link in a comment here if you wish.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-5751019325583731366?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/5751019325583731366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=5751019325583731366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5751019325583731366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5751019325583731366'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/03/1-year-of-open-translations.html' title='1 year of open translations'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_I2bh26gyfUU/SbuAyD1lEkI/AAAAAAAAEuo/mc5cVuBE-ps/s72-c/Narro+-+1+year+old.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-3384807111469694390</id><published>2009-02-27T12:46:00.003+02:00</published><updated>2009-02-27T12:55:40.985+02:00</updated><title type='text'>Where is that link?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/SafE1hQ8ydI/AAAAAAAAEtw/E3TRZ67l4ow/s1600-h/Narro+-+Click+to+translate.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 45px;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/SafE1hQ8ydI/AAAAAAAAEtw/E3TRZ67l4ow/s400/Narro+-+Click+to+translate.png" alt="" id="BLOGGER_PHOTO_ID_5307427109620992466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Working with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Narro&lt;/span&gt; I have come to the conclusion that the Actions columns from the text lists was just eating up valuable space. So I dropped it. Now you have to click the translation cell to translate. This way I also had the chance to explain the colours that I use:&lt;ul&gt;&lt;li&gt;black means approved&lt;/li&gt;&lt;li&gt;blue means not approved and not your translation, but the most voted&lt;/li&gt;&lt;li&gt;green means still not approved but it's your translation&lt;/li&gt;&lt;/ul&gt;Feel free to give some feedback on this.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I2bh26gyfUU/SafF6DQxnuI/AAAAAAAAEt4/PTmjlRm3HYw/s1600-h/Narro+-+Search+by+author.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 91px;" src="http://3.bp.blogspot.com/_I2bh26gyfUU/SafF6DQxnuI/AAAAAAAAEt4/PTmjlRm3HYw/s400/Narro+-+Search+by+author.png" alt="" id="BLOGGER_PHOTO_ID_5307428286978170594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;I also added &lt;span style="font-style: italic;"&gt;Search by author&lt;/span&gt;. Sometimes I get a very good translator and I want to approve all of his suggestions. So now I just search for him using the texts list and either use mass approve or just do it old fashion, text by text.&lt;br /&gt;&lt;br /&gt;Another hidden feature worth mentioning is that the translation page already has some access keys defined for keyboard fanatics. Here's the list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Save - s&lt;/li&gt;&lt;li&gt;Save and ignore - i&lt;/li&gt;&lt;li&gt;Approve - v&lt;/li&gt;&lt;li&gt;Next - k&lt;/li&gt;&lt;li&gt;Next 100 - h&lt;/li&gt;&lt;li&gt;Previous 100 - l&lt;/li&gt;&lt;li&gt;Previous - j&lt;/li&gt;&lt;li&gt;Copy original - c&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;  In &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Firefox&lt;/span&gt; you use Alt+Shift+letter above. Feedback is welcomed on this as well, but have in mind that I'm planning to make this keys customizable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-3384807111469694390?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/3384807111469694390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=3384807111469694390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3384807111469694390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3384807111469694390'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/02/where-is-that-link.html' title='Where is that link?'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/SafE1hQ8ydI/AAAAAAAAEtw/E3TRZ67l4ow/s72-c/Narro+-+Click+to+translate.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-7154826454490979429</id><published>2009-02-16T13:12:00.002+02:00</published><updated>2009-02-16T14:39:21.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Nobody's perfect: 0.9.4</title><content type='html'>The new release contains many improvements on the import and export side as I got a lot of complaints that "it's not working", especially for Windows based installations.&lt;br /&gt;&lt;br /&gt;There are also new features, probably the most notable is the mass approve function on the text list.&lt;br /&gt;&lt;br /&gt;I'd like to draw some attention to a hidden feature that I've never talked about before. If you put in the project's directory, let's say data/import/1 two files named import.sh and export.sh they will be executed, the first before import (for things like running a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;wget&lt;/span&gt;) and the second after export (for things like creating a language pack, or a compiled .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;po&lt;/span&gt; file). The scripts are called with useful arguments. Here's a script used for creating a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Firefox&lt;/span&gt; language pack after the export process:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;#!/bin/bash&lt;br /&gt;# $1 - language code&lt;br /&gt;# $2 - language id&lt;br /&gt;# $3 - project name&lt;br /&gt;# $4 - project id&lt;br /&gt;# $5 - user id&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;cd&lt;/span&gt; /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;mozilla&lt;/span&gt;_projects/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;firefox&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;fx&lt;/span&gt;/browser/locales&lt;br /&gt;&lt;br /&gt;make -s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;langpack&lt;/span&gt;-$1&lt;br /&gt;export &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;retVal&lt;/span&gt;=$?&lt;br /&gt;&lt;br /&gt;exit $&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;retVal&lt;/span&gt;&lt;/blockquote&gt;Don't forget about returning a value. The output will be shown anyway but with a warning or success message depending on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;retVal&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If you're doing a fresh installation, follow the instructions in the INSTALL file.&lt;br /&gt;If you're updating from 0.9.3, run the update files in the root directory. Their names are pretty suggestive.&lt;br /&gt;&lt;br /&gt;And here's the link: &lt;a href="http://narro.googlecode.com/files/narro-0.9.4.tar.gz"&gt;http://narro.googlecode.com/files/narro-0.9.4.tar.gz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd just like to add a small note of warning. The setup and install process may be a little rough as systems installations differ. But if you need help, don't hesitate to ask for help on the discussion group: &lt;a href="http://groups.google.com/group/narro-project/post"&gt;http://groups.google.com/group/narro-project/post&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-7154826454490979429?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/7154826454490979429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=7154826454490979429' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7154826454490979429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7154826454490979429'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/02/nobodys-perfect-094.html' title='Nobody&apos;s perfect: 0.9.4'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-7627415002562645414</id><published>2009-02-12T17:40:00.005+02:00</published><updated>2009-02-12T18:00:30.967+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='story'/><title type='text'>Sharing the story: localization matters</title><content type='html'>Ever since I installed a &lt;a href="https://l10n.mozilla.org/narro"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Narro&lt;/span&gt; instance on the l10n.mozilla.org&lt;/a&gt; server I received requests for supporting languages that you don't usually find next to other languages in localized software versions. They want Firefox in &lt;span style="font-style: italic;"&gt;their&lt;/span&gt; language. Like Mayan, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Oromo&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Valencian&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Kabyle&lt;/span&gt;, Kazakh, Zapotec, Malayalam and others.&lt;br /&gt;&lt;br /&gt;They have to register an account and I have to give them administrative permissions on their language. After that, they can start translating in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Narro&lt;/span&gt;. They can invite their friends to help. Whenever they feel like testing, they export the translation and a language pack is generated ready to be installed. That's a language pack that they can post on addons.mozilla.org for others to enjoy.&lt;br /&gt;&lt;br /&gt;So a low entry barrier to the localization matters. If people like the software, sooner or later they want it in their own language. And be sure that there are people that won't use software in English.&lt;br /&gt;&lt;br /&gt;So today I feel the essence of localization, which is making a product suitable for use in a particular country or region. I might add "by simply translating it", because usually you need tools and knowledge.&lt;br /&gt;&lt;br /&gt;Love your language!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-7627415002562645414?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/7627415002562645414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=7627415002562645414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7627415002562645414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7627415002562645414'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/02/sharing-story-localization-matters.html' title='Sharing the story: localization matters'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-7902064019629151278</id><published>2009-02-05T16:41:00.003+02:00</published><updated>2009-02-05T16:44:36.164+02:00</updated><title type='text'>Sort files and projects by progress</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/SYr6u0V0HoI/AAAAAAAAEr4/gPbNZPAYiCs/s1600-h/Narro+-+Sort+files+and+projects+by+progress.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 327px;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/SYr6u0V0HoI/AAAAAAAAEr4/gPbNZPAYiCs/s400/Narro+-+Sort+files+and+projects+by+progress.png" alt="" id="BLOGGER_PHOTO_ID_5299323593785876098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've just finished writing the piece of code that allows sorting files and projects by progress. This seems such a natural thing to do, but it's so complicated to code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-7902064019629151278?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/7902064019629151278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=7902064019629151278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7902064019629151278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7902064019629151278'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/02/sort-files-and-projects-by-progress.html' title='Sort files and projects by progress'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/SYr6u0V0HoI/AAAAAAAAEr4/gPbNZPAYiCs/s72-c/Narro+-+Sort+files+and+projects+by+progress.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-7704317948458272013</id><published>2009-02-05T10:33:00.003+02:00</published><updated>2009-02-05T12:18:34.892+02:00</updated><title type='text'>More on mass aproval</title><content type='html'>I've been testing this feature on production for just a day and I can say "yes, it's very useful" already. For now, I use it like this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I choose to see only texts that require approval&lt;/li&gt;&lt;li&gt;I click Mass approve&lt;/li&gt;&lt;li&gt;I choose which suggestions to approve&lt;/li&gt;&lt;li&gt;I save them all&lt;/li&gt;&lt;/ul&gt;I have 20 texts per page. I never could approve 20 at once because some of them don't have suggestions, are too long, have access keys or have bad suggestions. But the average is about 10 out of 20, which is good.&lt;br /&gt;&lt;br /&gt;I'll be updating https://l10n.mozilla.org/narro instance shortly with this change which I think others will find it useful too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-7704317948458272013?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/7704317948458272013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=7704317948458272013' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7704317948458272013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7704317948458272013'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/02/more-mass-aproval.html' title='More on mass aproval'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-779977483163576464</id><published>2009-02-04T17:35:00.006+02:00</published><updated>2009-02-04T18:31:28.272+02:00</updated><title type='text'>Approve multiple texts at once</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/SYm11zQ10qI/AAAAAAAAErw/VU74tBFzdJQ/s1600-h/Narro+-+Mass+approve,+approve+multiple+translations+at+once.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 221px;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/SYm11zQ10qI/AAAAAAAAErw/VU74tBFzdJQ/s400/Narro+-+Mass+approve,+approve+multiple+translations+at+once.png" alt="" id="BLOGGER_PHOTO_ID_5298966372476637858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've got this request from many Rosetta fans. Mass operations directly in the text list. I've started with the approve operation, which doesn't need any validation. There are some restrictions though:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;only texts that have less then 100 characters&lt;/li&gt;&lt;li&gt;only texts that don't have an access key&lt;/li&gt;&lt;/ul&gt;As you can see in the image, the idea is simple, select a suggestion to approve for each text and click "Approve all selected suggestions". In this mode, the column context is always shown, as it's useful for approval and the actions column is hidden.&lt;br /&gt;&lt;br /&gt;I'm thinking also of mass vote and mass add operations. Voting shouldn't be a problem, but adding should, because plugins validate the added suggestion and have to display a message somewhere.&lt;br /&gt;&lt;br /&gt;Personally I'm not happy about mass operations as they bring errors with them, but sometimes they may be useful if the right people use them. Like when you're approving a batch of search results for a term, let's say "File". So for this mass operations there's a special permission separate from the normal operations that can be give only to some people.&lt;br /&gt;&lt;br /&gt;This feature is on the trunk and subject to change. Any opinions are welcomed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-779977483163576464?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/779977483163576464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=779977483163576464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/779977483163576464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/779977483163576464'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/02/approve-multiple-texts-at-once.html' title='Approve multiple texts at once'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/SYm11zQ10qI/AAAAAAAAErw/VU74tBFzdJQ/s72-c/Narro+-+Mass+approve,+approve+multiple+translations+at+once.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-3970400706395346042</id><published>2009-01-31T17:31:00.000+02:00</published><updated>2009-01-31T17:32:05.079+02:00</updated><title type='text'>What's Narro good for?</title><content type='html'>Being too busy developing the application, I've never described in the simplest way possible what's Narro good for. Since examples are the best way to learn, here's one:&lt;br /&gt;&lt;br /&gt;Old process:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;svn checkout file.po (CVS, hg, git or any other similar command)&lt;/li&gt;&lt;li&gt;poedit file.po (Open the file with a program to translate it)&lt;/li&gt;&lt;li&gt;svn commit file.po (commit the translations I've made with let's say poEdit)&lt;/li&gt;&lt;/ol&gt;Actual process using Narro:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;svn checkout file.po (CVS, hg, git or any other similar command)&lt;/li&gt;&lt;li&gt;import the file in Narro&lt;/li&gt;&lt;li&gt;translate the file in Narro&lt;/li&gt;&lt;li&gt;export the file from Narro&lt;/li&gt;&lt;li&gt;svn commit file.po (commit the translations I've made with let's say poEdit)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Although it seems that the actual process got complicated, there are several major improvements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;one text can have more translations than one&lt;br /&gt;&lt;/li&gt;&lt;li&gt;people can translate at the same time&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the only tool they need is a browser&lt;/li&gt;&lt;li&gt;I can introduce various methods to improve quality, like the ones already implemented: punctuation check, spell check and entity check&lt;/li&gt;&lt;/ul&gt;As you can see from the example, the checkout and commit operations are still done the old way, right now using some cron jobs. That's because Narro doesn't know right now to import from something else than a directory. In the next version I plan to add the possibility to write various plugins for sources of translations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-3970400706395346042?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/3970400706395346042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=3970400706395346042' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3970400706395346042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3970400706395346042'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/01/whats-narro-good-for.html' title='What&apos;s Narro good for?'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-750268258385338635</id><published>2009-01-21T17:29:00.002+02:00</published><updated>2009-01-21T17:35:42.498+02:00</updated><title type='text'>Narro has its own translation in gettext</title><content type='html'>This entire post is about Narro's interface, not the files it handles for translation.&lt;br /&gt;&lt;br /&gt;I've changed the internationalization engine that Narro uses for its translation from home made to gettext, so now there's a pot file to translate.&lt;br /&gt;&lt;br /&gt;For those using l10n.mozilla.org, you'll have to approve the texts again, but this time you can export a po file an send it to me so I can include it in newer versions.&lt;br /&gt;When you export the translation, a compiled file is generated as well besides the export po file and the translation in Narro is activated instantly.&lt;br /&gt;&lt;br /&gt;Sadly, the engine I use, Zend_Translate, doesn't care about plurals, but since it's an active project I hope future versions will support plurals. And right now there are a few places that would use plurals, about 10, so it's not a big issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-750268258385338635?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/750268258385338635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=750268258385338635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/750268258385338635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/750268258385338635'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/01/narro-has-its-own-translation-in.html' title='Narro has its own translation in gettext'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-5801799985519715234</id><published>2009-01-17T12:20:00.005+02:00</published><updated>2009-01-17T12:34:29.270+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Narro 0.9.3 is out</title><content type='html'>&lt;div style="text-align: left;"&gt;Here goes another release. It wasn't the best time to release as there are many things to add, but the 0.9.2 version was getting too old and the trunk version is used without problems on two working installation, so things were stable enough.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_I2bh26gyfUU/SXGwrFDLKGI/AAAAAAAAEoA/OZtnm2bLhwQ/Narro%20-%20Choose%20your%20export%20flavour.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 161px;" src="http://lh5.ggpht.com/_I2bh26gyfUU/SXGwrFDLKGI/AAAAAAAAEoA/OZtnm2bLhwQ/Narro%20-%20Choose%20your%20export%20flavour.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I'll highlight the most important additions in this release:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;permissions are grouped in roles now, which makes user management easier&lt;/li&gt;&lt;li&gt;"validate" changed into "approve"&lt;/li&gt;&lt;li&gt;you can export the unapproved suggestions based on several criteria, like the most voted ones, or your suggestions&lt;/li&gt;&lt;/ul&gt;Download from the project page: &lt;a href="http://code.google.com/p/narro/"&gt;http://code.google.com/p/narro/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For the next version, I'd like to create customizable import and export sources that will allow you to get the translation from CVS and post it back to CVS for example. With this step, a general cleaning and improvement on messages on the import/export side will come so people that experienced problems with different php installations should be a little happier with the next version. I myself and a few others will be happy as well to publish their changes directly to versioning systems.&lt;br /&gt;&lt;br /&gt;As always, feel free to &lt;a href="http://code.google.com/p/narro/issues/entry"&gt;suggest ideas or report bugs about Narro&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-5801799985519715234?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/5801799985519715234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=5801799985519715234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5801799985519715234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5801799985519715234'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/01/narro-093-is-out.html' title='Narro 0.9.3 is out'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_I2bh26gyfUU/SXGwrFDLKGI/AAAAAAAAEoA/OZtnm2bLhwQ/s72-c/Narro%20-%20Choose%20your%20export%20flavour.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-7878433683412175327</id><published>2009-01-12T14:53:00.002+02:00</published><updated>2009-01-12T15:00:20.111+02:00</updated><title type='text'>Narro @ Fosdem</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a href="http://www.fosdem.org/"&gt;&lt;img src="http://www.fosdem.org/promo/fosdem" alt="FOSDEM, the Free and Open Source Software Developers' European Meeting" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I'm going to Fosdem, so if you're there and interested in having a talk with me, try to find my head in the croud.&lt;br /&gt;&lt;br /&gt;For those of you who can't make it, I'd just like to recommend to use the trunk version of Narro until a release is done. There were many changes, but there's no time right now for a release.&lt;br /&gt;&lt;br /&gt;I'm planning to work on defining sources for import and export so that you can import and export directly from/to versioning systems. This is one of the most important things after getting Narro working as a translation tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-7878433683412175327?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/7878433683412175327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=7878433683412175327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7878433683412175327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/7878433683412175327'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2009/01/narro-fosdem.html' title='Narro @ Fosdem'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2893181631261505906</id><published>2008-10-22T21:20:00.002+03:00</published><updated>2008-10-22T21:26:39.332+03:00</updated><title type='text'>Narro @ MozCamp</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I2bh26gyfUU/SP9vJFSIW2I/AAAAAAAAEaU/RUNDzHiCVd4/s1600-h/Narro%40MozCamp.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_I2bh26gyfUU/SP9vJFSIW2I/AAAAAAAAEaU/RUNDzHiCVd4/s320/Narro%40MozCamp.jpg" alt="" id="BLOGGER_PHOTO_ID_5260045091619756898" border="0" /&gt;&lt;/a&gt;If you're attending this year's Mozilla Camp Europe on October 25/26 you can meet me there to talk, praise, criticise or make suggestions to improve Narro.&lt;br /&gt;&lt;br /&gt;Lately I've been hearing about people discovering Narro by themselves and installing it successfully, but more than that, actually using it. This is great considering that I haven't made any changes recently. I've been using Narro myself for all the translations that I'm coordinating and some that others wanted to coordinate in Narro.&lt;br /&gt;&lt;br /&gt;If I'd get some help from some php developers, that would be great, but the chance to find a php developer that is into translation seems quite low, but I'm still hoping.&lt;br /&gt;&lt;br /&gt;See you in Barcelona!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2893181631261505906?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2893181631261505906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2893181631261505906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2893181631261505906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2893181631261505906'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/10/narro-mozcamp.html' title='Narro @ MozCamp'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_I2bh26gyfUU/SP9vJFSIW2I/AAAAAAAAEaU/RUNDzHiCVd4/s72-c/Narro%40MozCamp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6438999035979967798</id><published>2008-09-24T11:44:00.004+03:00</published><updated>2008-09-24T11:57:08.625+03:00</updated><title type='text'>Still here</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/SNoAqexKsNI/AAAAAAAADI0/3y-IrXVAqGI/s1600-h/%C8%99uruburi+%C8%99i+piuli%C8%9Be.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/SNoAqexKsNI/AAAAAAAADI0/3y-IrXVAqGI/s320/%C8%99uruburi+%C8%99i+piuli%C8%9Be.jpg" alt="" id="BLOGGER_PHOTO_ID_5249509045467525330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes, I'm still here although it has been rather quiet. I've been busy translating and meanwhile I discovered that it's a bless to have an application that just works although I haven't worked on it for a month. Yes, I'm talking about Narro.&lt;br /&gt;&lt;br /&gt;I've just returned to the code. I've started with several small fixes, like an issue on the login page. The big things that need to be done are still the improvement of the import process as people have been complaining that it doesn't work on new installations and there is no specific error and adding roles, since managing users is rather hard now with all these permissions. Yes, committing and retreiving from versioning systems is another big thing as well. I'd say it's the next big thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6438999035979967798?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6438999035979967798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6438999035979967798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6438999035979967798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6438999035979967798'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/09/still-here.html' title='Still here'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/SNoAqexKsNI/AAAAAAAADI0/3y-IrXVAqGI/s72-c/%C8%99uruburi+%C8%99i+piuli%C8%9Be.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-8031724255841686262</id><published>2008-09-04T11:16:00.003+03:00</published><updated>2008-09-04T12:15:10.128+03:00</updated><title type='text'>Upcoming: User roles, dashboard page and notifications</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/SL-kZslMIAI/AAAAAAAADDo/04qUmUhSLrA/s1600-h/Latest+Narro+issues.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/SL-kZslMIAI/AAAAAAAADDo/04qUmUhSLrA/s400/Latest+Narro+issues.png" alt="" id="BLOGGER_PHOTO_ID_5242089252653375490" border="0" /&gt;&lt;/a&gt;Thanks to a few people that gave valuable feedback and myself, I have many improvements planned for future versions. Among them are user roles, since the permissions are growing and it's getting hard to manage permissions for each user, a dashboard page that will replace the project list as a start page and improvements in notifications that should allow you to recieve just a digest message via RSS (or possibly email in the future) and see the whole bunch of modifications, no matter how large in Narro, nicely paginated.&lt;br /&gt;&lt;br /&gt;For those of you using l10n.mozilla.org installation, note that lately the machine is slower than it used to be, other installations are just fine. I recommend that you find a place where you can keep your own Narro instance if possible.&lt;br /&gt;&lt;br /&gt;Regarding integration with versioning systems, it will have to wait a bit, at least one version, because I need the features described above for the projects I'm translating. Remember, I actually translate, that's why I'm writing this application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-8031724255841686262?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/8031724255841686262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=8031724255841686262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8031724255841686262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8031724255841686262'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/09/upcoming-user-roles-dashboard-page-and.html' title='Upcoming: User roles, dashboard page and notifications'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/SL-kZslMIAI/AAAAAAAADDo/04qUmUhSLrA/s72-c/Latest+Narro+issues.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-5905956959581579568</id><published>2008-08-21T12:15:00.004+03:00</published><updated>2008-08-21T12:56:10.024+03:00</updated><title type='text'>Version 0.9.2 is out</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I2bh26gyfUU/SK04oeysEDI/AAAAAAAAB9o/_vzFXQmnjQk/s400/Narro+-+versions.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 237px; height: 361px;" src="http://1.bp.blogspot.com/_I2bh26gyfUU/SK04oeysEDI/AAAAAAAAB9o/_vzFXQmnjQk/s400/Narro+-+versions.png" alt="" border="0" /&gt;&lt;/a&gt;Here goes &lt;a href="http://narro.googlecode.com/files/narro-0.9.2.tar.gz"&gt;another Narro version&lt;/a&gt;. Several issues were fixed, many things were added. Among the biggest additions there is OpenId login, the possibility to debate a text and the fact that you can change the current translation language on any page.&lt;br /&gt;&lt;br /&gt;If you're updating a database from version 0.9.1, use the database update script &lt;a href="http://narro.googlecode.com/files/update_narro_from_0.9.1_to_0.9.2.sql"&gt;distributed separately&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm getting close to version 1.0.0 which would acomplish my dream of pushing the translations to the versioning systems through a button. I'll be able to focus just on translation, everything will be on the web, in the open, for everyone to see and anyone can help me translate. To achieve this, I'll considerably grow the import/export sections allowing more and more types of sources and destinations.&lt;br /&gt;&lt;br /&gt;Among other cool things planned for version 1.0.0 there are glossaries per project and a page where you will see texts and associated suggestions for all projects. On this page you will be able to see where a text is used in all projects, or just in one, and how it is translated. So it's more or less a check for consistency.&lt;br /&gt;&lt;br /&gt;Other low priority big additions are showing translations for similar texts and mass operations, like translating in the text list.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I2bh26gyfUU/SK04oeysEDI/AAAAAAAAB9o/_vzFXQmnjQk/s1600-h/Narro+-+versions.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-5905956959581579568?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/5905956959581579568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=5905956959581579568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5905956959581579568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5905956959581579568'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/08/version-092-is-out.html' title='Version 0.9.2 is out'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_I2bh26gyfUU/SK04oeysEDI/AAAAAAAAB9o/_vzFXQmnjQk/s72-c/Narro+-+versions.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6957938661865551682</id><published>2008-08-19T16:02:00.004+03:00</published><updated>2008-08-19T16:14:20.587+03:00</updated><title type='text'>Discussions where they belong, in context</title><content type='html'>I've seen many translation communities using mailing lists to discuss terms. This leads to an email account pumped with messages that you will or not delete and a web archive somewhere that most of the people I met don't use. So valuable information is often lost.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I2bh26gyfUU/SKrEjl59oTI/AAAAAAAAB9Q/yiQvmvO1-GU/s1600-h/Narro+-+discussions+over+texts.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_I2bh26gyfUU/SKrEjl59oTI/AAAAAAAAB9Q/yiQvmvO1-GU/s400/Narro+-+discussions+over+texts.png" alt="" id="BLOGGER_PHOTO_ID_5236213632521314610" border="0" /&gt;&lt;/a&gt;I'm very happy to have the possibility to discuss texts right in Narro. These discussions are tied to the texts and every time a new project uses a text that was previously discussed, the discussion will be shown on the translation page.&lt;br /&gt;&lt;br /&gt;You can follow these discussions with RSS. If you're not using RSS, you better start to. It's better to read something when you want instead of having it delivered in your email when somebody else wants. If you're worried about offline access, don't be. Every major reader caches the articles for offline use. I recommend Google Reader if you're already using Google products. There are other interesting feeds also, so if you're using Narro, check these out. Just click on the feed icon in the location bar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I2bh26gyfUU/SKrGFBY2G2I/AAAAAAAAB9Y/YfrE9WTDRRg/s1600-h/Narro+feeds.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_I2bh26gyfUU/SKrGFBY2G2I/AAAAAAAAB9Y/YfrE9WTDRRg/s400/Narro+feeds.png" alt="" id="BLOGGER_PHOTO_ID_5236215306345913186" border="0" /&gt;&lt;/a&gt;In other news, Narro supports OpenId authentication and version 0.9.2 is on its way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6957938661865551682?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6957938661865551682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6957938661865551682' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6957938661865551682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6957938661865551682'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/08/discussions-where-they-belong-in.html' title='Discussions where they belong, in context'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I2bh26gyfUU/SKrEjl59oTI/AAAAAAAAB9Q/yiQvmvO1-GU/s72-c/Narro+-+discussions+over+texts.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-8442221882379742473</id><published>2008-08-07T17:00:00.004+03:00</published><updated>2008-08-07T17:14:25.655+03:00</updated><title type='text'>Many languages in many tabs</title><content type='html'>Some people expressed the need to work with different languages in different tabs. This was not possible, because the language was stored in session and if you tried this, you'd get some weird behavior.&lt;br /&gt;&lt;br /&gt;Just back from the Firefox Summit, I spent some time to change this, so now you can select which language you are translating in at anytime and you can work on different languages in different tabs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I2bh26gyfUU/SJsCoDcnLAI/AAAAAAAAB9I/_CG1nNakBpw/s1600-h/Many+tabs,+many+languages.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_I2bh26gyfUU/SJsCoDcnLAI/AAAAAAAAB9I/_CG1nNakBpw/s400/Many+tabs,+many+languages.png" alt="" id="BLOGGER_PHOTO_ID_5231778279264300034" border="0" /&gt;&lt;/a&gt;The one thing that's still stored in session is the user data, so you can't be logged in with two users at once in the same browser.&lt;br /&gt;&lt;br /&gt;Another thing added is that now you can choose Narro's language independent of the language you are translating in.&lt;br /&gt;&lt;br /&gt;There are lots of things that will be added, and a 0.9.2 release will be out soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-8442221882379742473?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/8442221882379742473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=8442221882379742473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8442221882379742473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8442221882379742473'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/08/many-languages-in-many-tabs.html' title='Many languages in many tabs'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_I2bh26gyfUU/SJsCoDcnLAI/AAAAAAAAB9I/_CG1nNakBpw/s72-c/Many+tabs,+many+languages.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2325469161126245718</id><published>2008-07-21T22:05:00.007+03:00</published><updated>2008-07-21T22:22:35.722+03:00</updated><title type='text'>The basics: users and texts</title><content type='html'>I'm beginning a series of posts that will explain how Narro works. Let's look at the Narro users.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_I2bh26gyfUU/SITekYgf0QI/AAAAAAAAB0s/YHOyLJJ3_Q8/s1600-h/anyone+can+translate+some+can+validate.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_I2bh26gyfUU/SITekYgf0QI/AAAAAAAAB0s/YHOyLJJ3_Q8/s400/anyone+can+translate+some+can+validate.png" alt="" id="BLOGGER_PHOTO_ID_5225546184292028674" border="0" /&gt;&lt;/a&gt;Any registered user can translate. You could even let anonymous users translate, but it's better to get people committed. Their suggestion needs to be reviewed by someone with experience. So some people can validate translations. Right now, the anyone user is missing from existing translation processes. Usually there is one person translating and validating at the same time. So Narro lets anyone translate and someone with experience spends considerably less time just correcting or validating. This process ensures that any translation was reviewed at least once.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_I2bh26gyfUU/SITfrYA-tKI/AAAAAAAAB00/_ypN_vThhh8/s1600-h/one+text+many+translations+many+projects.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_I2bh26gyfUU/SITfrYA-tKI/AAAAAAAAB00/_ypN_vThhh8/s400/one+text+many+translations+many+projects.png" alt="" id="BLOGGER_PHOTO_ID_5225547403930547362" border="0" /&gt;&lt;/a&gt;Narro stores a text that needs to be translated only once. One text can have many translation suggestions, not just one as usual so far. There's always room for improvement and some texts may be translated in various ways depending on the circumstances. One text may be used by many projects. So the same text present in many projects will have the same translation suggestions available to choose from.&lt;br /&gt;&lt;br /&gt;Think of Narro's inside architecture like a language dictionary that's constantly growing. Or a translation memory if you prefer. It has the original text and several possible translations. You choose which translation to use in a particular context.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2325469161126245718?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2325469161126245718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2325469161126245718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2325469161126245718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2325469161126245718'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/07/basics-users-and-texts.html' title='The basics: users and texts'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_I2bh26gyfUU/SITekYgf0QI/AAAAAAAAB0s/YHOyLJJ3_Q8/s72-c/anyone+can+translate+some+can+validate.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-3848443765954657137</id><published>2008-07-14T21:20:00.005+03:00</published><updated>2008-07-14T22:22:16.497+03:00</updated><title type='text'>And we're off. Narro version 0.9.1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_I2bh26gyfUU/SHudCWVHU5I/AAAAAAAAB0k/-y7YQHgZ-h0/s1600-h/Captur%C4%83+ecran+-+Narro+-+l10n.mozilla.org.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_I2bh26gyfUU/SHudCWVHU5I/AAAAAAAAB0k/-y7YQHgZ-h0/s400/Captur%C4%83+ecran+-+Narro+-+l10n.mozilla.org.png" alt="" id="BLOGGER_PHOTO_ID_5222940856545661842" border="0" /&gt;&lt;/a&gt;It's about time. To launch a version that everybody can easily use. This is no beta. This is &lt;span style="font-style: italic; font-weight: bold;"&gt;Narro 0.9.1&lt;/span&gt;. I gave up on beta 2 because I really don't have a QA team to justify beta releases. So I'd rather release often.&lt;br /&gt;&lt;br /&gt;Finally, Narro supports a different number of plural forms than the source language (usually english). Better yet, on import, based on the language's known plural forms, the correct number of plural forms are created even if they don't exist in the translations to import. This gives you extra quality. The PO header is filled with the last revision date set as the export date from Narro, the translator's name and email address from Narro, the correct plural form declaration, the language name and the project id if it's not defined. So you'll get a beautiful PO on export.&lt;br /&gt;&lt;br /&gt;There are numerous other things that were added and fixed. Feel free to browse the &lt;a href="http://code.google.com/p/narro/source/list"&gt;checkin log.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was thinking of adding some screencasts, but I'd have to upload some large videos because I'd need at least 800x600 so that you could notice something. So please visit &lt;a href="https://l10n.mozilla.org/narro"&gt;https://l10n.mozilla.org/narro&lt;/a&gt; to see Narro in action.&lt;br /&gt;&lt;br /&gt;To install Narro, &lt;a href="http://narro.googlecode.com/files/narro-0.9.1.tar.gz"&gt;download&lt;/a&gt; it, unpack it in your webroot directory and follow the instructions from the INSTALL file. If you succeed, please come back and post thoughts of joy. For frustrations and other issues, please use the &lt;a href="http://groups.google.com/group/narro-project"&gt;narro-project&lt;/a&gt; google group.&lt;br /&gt;&lt;br /&gt;Thanks to NGUYEN Manh Hung, &lt;a href="http://ehsanakhgari.org/"&gt;Ehsan Akhgari&lt;/a&gt;,          Huda Sarfraz, &lt;a href="http://adi.roiban.ro/"&gt;Adi Roiban&lt;/a&gt; and &lt;a href="http://janimo.blogspot.com/"&gt;Jani Monoses&lt;/a&gt; for their help.&lt;a href="http://janimo.blogspot.com/"&gt;&lt;br /&gt;&lt;/a&gt;&lt;h1&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-3848443765954657137?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/3848443765954657137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=3848443765954657137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3848443765954657137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3848443765954657137'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/07/and-were-off-narro-version-091.html' title='And we&apos;re off. Narro version 0.9.1'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_I2bh26gyfUU/SHudCWVHU5I/AAAAAAAAB0k/-y7YQHgZ-h0/s72-c/Captur%C4%83+ecran+-+Narro+-+l10n.mozilla.org.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-8058754018093364338</id><published>2008-07-09T12:57:00.003+03:00</published><updated>2008-07-09T13:13:47.974+03:00</updated><title type='text'>Beta 2 is getting closer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_I2bh26gyfUU/SHSNrpsXOpI/AAAAAAAABy8/vfKDMQuhcm0/s1600-h/narro+projects.png"&gt;&lt;img style="border: 2px solid black; margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_I2bh26gyfUU/SHSNrpsXOpI/AAAAAAAABy8/vfKDMQuhcm0/s400/narro+projects.png" alt="" id="BLOGGER_PHOTO_ID_5220953649095064210" border="0" /&gt;&lt;/a&gt;Things are stable so far. Beta 1 went out with some installation problems and import/export problems. All those that were reported were fixed.&lt;br /&gt;&lt;br /&gt;I've spent most of my time adding minor things here and there, correcting bugs, so I'll release a Beta 2 at the end of this week. If it won't have serious bugs, version 1.0.0 stable will be next. Otherwise, Beta 3.&lt;br /&gt;&lt;br /&gt;I know I really have to write a manual of some sort but I'm really busy coding, and people have understood so far the application without needing a manual.&lt;br /&gt;&lt;br /&gt;On the left, you can see what projects are in the Narro installation used for Romanian language so far. You can see native OpenOffice format, Gettext, Dumbgettext (the one used by some mozilla sites, it's not a correct gettext, but hey, Narro deals with it), you can see even SVG and phpMyAdmin format there.&lt;br /&gt;&lt;br /&gt;So you get the idea. Narro is meant to translate almost anything that is related to user interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-8058754018093364338?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/8058754018093364338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=8058754018093364338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8058754018093364338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8058754018093364338'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/07/beta-2-is-getting-closer.html' title='Beta 2 is getting closer'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_I2bh26gyfUU/SHSNrpsXOpI/AAAAAAAABy8/vfKDMQuhcm0/s72-c/narro+projects.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-3140248794067966684</id><published>2008-07-05T14:42:00.005+03:00</published><updated>2008-07-09T23:51:49.210+03:00</updated><title type='text'>First Beta 1 results</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_I2bh26gyfUU/SHUkf1C8PjI/AAAAAAAABzM/mJaKw_U3mY0/s1600-h/Narro+-+Translate,+we%27re+open.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 261px; height: 261px;" src="http://bp2.blogger.com/_I2bh26gyfUU/SHUkf1C8PjI/AAAAAAAABzM/mJaKw_U3mY0/s400/Narro+-+Translate,+we%27re+open.png" alt="" id="BLOGGER_PHOTO_ID_5221119472239918642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Beta 1 got some brave users who tried to install Narro on their own machines. Luckily they gave feedback too, so a first set of problems are set to be fixed in Beta 2.&lt;br /&gt;&lt;br /&gt;The most obvious was the lack of support for system calls through php, so in Beta 2, the &lt;span style="font-style: italic;"&gt;exec&lt;/span&gt; function will be replaced everywhere with php code.&lt;br /&gt;&lt;br /&gt;If the &lt;span style="font-style: italic;"&gt;proc_open&lt;/span&gt; function is disabled as well, instead of having the project import in the background with a nice progress bar, you'll have to wait for a page to finish loading, as usual on the web. Or import through the command line.&lt;br /&gt;&lt;br /&gt;Some other bugs were fixed, I'm really really trying not to add more features to speed up a 1.0 stable release.&lt;br /&gt;&lt;br /&gt;I had a few minutes to try my drawing skills and I have now a Narro logo, slogan and a cute favicon.&lt;br /&gt;&lt;br /&gt;So, people hold on. For Beta 2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-3140248794067966684?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/3140248794067966684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=3140248794067966684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3140248794067966684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3140248794067966684'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/07/beta-1-got-some-brave-users-who-tried.html' title='First Beta 1 results'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_I2bh26gyfUU/SHUkf1C8PjI/AAAAAAAABzM/mJaKw_U3mY0/s72-c/Narro+-+Translate,+we%27re+open.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2513101365336865722</id><published>2008-07-01T11:40:00.002+03:00</published><updated>2008-07-01T11:53:04.096+03:00</updated><title type='text'>Beta 1 seen in the wild</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_I2bh26gyfUU/SGntq5-t0SI/AAAAAAAAByg/ar-PdKbMK7A/s1600-h/translate,+we%27re+open.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_I2bh26gyfUU/SGntq5-t0SI/AAAAAAAAByg/ar-PdKbMK7A/s400/translate,+we%27re+open.png" alt="" id="BLOGGER_PHOTO_ID_5217962964659589410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The day has come. You can take Narro for a spin on your own server. Download the &lt;a href="http://narro.googlecode.com/files/narro-0.9.0.tar.bz2"&gt;archive&lt;/a&gt; and follow instructions from the INSTALL file inside it. Visit the &lt;a href="http://code.google.com/p/narro/wiki/KnownIssues"&gt;Known Issues about Narro&lt;/a&gt; page. &lt;a href="http://code.google.com/p/narro/issues/entry"&gt;Report any other issues&lt;/a&gt;. Cross your fingers.&lt;br /&gt;&lt;br /&gt;Remember that this is a beta version. Proceed with caution and have patience. Ask in the &lt;a href="http://groups.google.com/group/narro-project"&gt;Narro google group&lt;/a&gt; for support because there's no help written yet as the application is growing. Expect some screencasts this week.&lt;br /&gt;&lt;br /&gt;If you're a PHP developer and want to help, please say so in the group.&lt;br /&gt;&lt;br /&gt;If you want to maintain your Mozilla translations on l10n.mozilla.org please contact me so I can give you necessary rights to do that. I'll have another post on this topic tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2513101365336865722?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2513101365336865722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2513101365336865722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2513101365336865722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2513101365336865722'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/07/beta-1-seen-in-wild.html' title='Beta 1 seen in the wild'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_I2bh26gyfUU/SGntq5-t0SI/AAAAAAAAByg/ar-PdKbMK7A/s72-c/translate,+we%27re+open.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-573343673507929720</id><published>2008-06-23T12:36:00.003+03:00</published><updated>2008-06-23T12:43:07.508+03:00</updated><title type='text'>Looking forward to the alpha release</title><content type='html'>I had a presentation on Narro on Friday and I received a first offer of help last week from &lt;a href="http://lourenzo.blog.br/"&gt;Lourenzo Ferreira&lt;/a&gt;. This should make me more committed to update SVN more frequently and keep the progress visible there by keeping a &lt;a href="http://code.google.com/p/narro/wiki/ToDo"&gt;ToDo&lt;/a&gt; page in the wiki updated. I'm planning a alpha release no matter what on July 1st. I'll post an article here and a tarball with some instructions on Narro's google code page.&lt;br /&gt;&lt;br /&gt;I really hope this brings more help on the development part, since Narro needs more than my spare time because it's constantly growing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-573343673507929720?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/573343673507929720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=573343673507929720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/573343673507929720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/573343673507929720'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/06/i-had-presentation-on-narro-on-friday.html' title='Looking forward to the alpha release'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-8639806422528713393</id><published>2008-06-16T00:26:00.003+03:00</published><updated>2008-06-16T00:48:56.692+03:00</updated><title type='text'>Is it ready yet ?</title><content type='html'>I have now a system that is productive. I'm using it to translate OpenOffice, Firefox, Fedora and other projects.&lt;br /&gt;&lt;br /&gt;I want a system that will help translation communities 100%. Usually people involved in software translation deal with the pain of multiple file formats to translate, the pain of trying to follow a glossary within a translation and the pain of discussing terms on a discussion list.&lt;br /&gt;&lt;br /&gt;So there's still a glossary to add and the possibility of discussing texts, contexts and suggestions. Just think how useful it would be to see the discussion over a term right where you translate it.&lt;br /&gt;&lt;br /&gt;Keeping translation quality high is of most importance to me. So there has to be a way of letting many people add suggestions. There is. But someone has to validate them through some means, so the person who validates needs a way to be notified that there are suggestions to validate or suggestions added to texts that were already validated, possible improvements. RSS is the simplest way, so that is one more thing that needs to be done.&lt;br /&gt;&lt;br /&gt;There are very few dedicated people who translate. Most people come and go. There has to be a way of getting them back. So there has to be some competition involved. Keeping track of a user typing speed, number of characters typed, number of suggestions added, showing charts, giving prizes, giving boxes to integrate them into Facebook, personal blog, etc,; these are things that need to be done. Let's face it, no matter how easy the tool used to translate is, you will never be able to keep up with en_US with a few people.&lt;br /&gt;&lt;br /&gt;Will all this change one day ? Will we all use XLIFF or something that would make translation easier? I doubt it. People like being different. I'm not counting on that. What I'm thinking is simple. I want a tool to feed it the english text to chew and get the translated text as quick as possible. I'll have it when it's ready.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-8639806422528713393?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/8639806422528713393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=8639806422528713393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8639806422528713393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/8639806422528713393'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/06/is-it-ready-yet.html' title='Is it ready yet ?'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-649858545784756602</id><published>2008-06-12T17:43:00.003+03:00</published><updated>2008-06-12T17:53:48.572+03:00</updated><title type='text'>RSS Feeds</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_I2bh26gyfUU/SFE2wrb9WfI/AAAAAAAABxw/urWu13mAyN4/s1600-h/rss_logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_I2bh26gyfUU/SFE2wrb9WfI/AAAAAAAABxw/urWu13mAyN4/s400/rss_logo.png" alt="" id="BLOGGER_PHOTO_ID_5211006453765986802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At last, hundreds of texts and translations are ready to invade your feed reader !&lt;br /&gt;&lt;br /&gt;For starters, there are two feeds, one with new texts that are added and one with new translation suggestions.&lt;br /&gt;&lt;br /&gt;It's simple, there's just a link to the Narro installation.&lt;br /&gt;&lt;br /&gt;Now I need to create a new page in Narro that allows you to see all original texts, no matter what project, a button to show all the suggestions, and a button to show all the projects that use a text.&lt;br /&gt;&lt;br /&gt;After this, I can tie the RSS articles to this page.&lt;br /&gt;&lt;br /&gt;And of course, add more and more feeds; who needs email anymore ?!&lt;br /&gt;&lt;br /&gt;Until you wait, you can still subscribe to the current Mozilla translation feeds to see what new texts are added, no matter if you're using Narro or not for translation.&lt;br /&gt;&lt;br /&gt;And you can subscribe to receive the translation suggestions.&lt;br /&gt;&lt;br /&gt;Try it on the installation from &lt;a href="https://l10n.mozilla.org/narro/narro_project_list.php"&gt;l10n.mozilla.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-649858545784756602?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/649858545784756602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=649858545784756602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/649858545784756602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/649858545784756602'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/06/rss-feeds.html' title='RSS Feeds'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_I2bh26gyfUU/SFE2wrb9WfI/AAAAAAAABxw/urWu13mAyN4/s72-c/rss_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-3957989827451311295</id><published>2008-05-25T01:31:00.002+03:00</published><updated>2008-05-25T01:42:22.944+03:00</updated><title type='text'>Time stamps on actions</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_I2bh26gyfUU/SDiXj1e7p0I/AAAAAAAAAtY/pvWJfpgc-sw/s1600-h/138506418_2e5c9fcf37.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_I2bh26gyfUU/SDiXj1e7p0I/AAAAAAAAAtY/pvWJfpgc-sw/s320/138506418_2e5c9fcf37.jpg" alt="" id="BLOGGER_PHOTO_ID_5204076011334641474" border="0" /&gt;&lt;/a&gt;Adding time stamps in Narro kept me busy lately. Some users wanted to see the latest added suggestions. I wanted to move forward to provide RSS feeds with this kind of data. Like a feed with new untranslated texts. Or even a feed with new suggestions added.&lt;br /&gt;&lt;br /&gt;So from now on, every type of user data that is added to the database is time stamped. There's a created field and a modified field. There may be a need of history in the future, but that's another table's job.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So what's next?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'll have to add options to filter texts/contexts/suggestions by date.&lt;br /&gt;The possibility to add comments to suggestions, contexts and texts.&lt;br /&gt;Glossary maintenance and linking terms to texts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why isn't there a version you can install and use yet?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I wouldn't be able to handle all the feedback that this would generate. I'd rather lay low and let the small group of Romanian translators handle the testing and in time I'll have a stable product. Because you don't want another Pootle, do you ? You have that. But you want a complex application that allows you to manage your translation community better and faster. You're reading something I'm writing after 3 years of translating open source software. Be sure I know what's there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-3957989827451311295?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/3957989827451311295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=3957989827451311295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3957989827451311295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3957989827451311295'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/05/time-stamps-on-actions.html' title='Time stamps on actions'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_I2bh26gyfUU/SDiXj1e7p0I/AAAAAAAAAtY/pvWJfpgc-sw/s72-c/138506418_2e5c9fcf37.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-2995367685007345935</id><published>2008-05-14T23:34:00.005+03:00</published><updated>2008-05-14T23:57:02.483+03:00</updated><title type='text'>The pain of gettext</title><content type='html'>Who would have thought ? I've done .dtd, .ini, .inc, .sdf and the popular gettext should have brought no problems.&lt;br /&gt;&lt;br /&gt;So Narro likes to guess access keys. Because it's annoying to type _, &amp;amp;, ~ or something else in the middle of the word. So Narro deals with this by removing the annoyance and leaving the job of access key selection to the reviewer, the person who validates one of the suggestions for a text to translate.&lt;br /&gt;&lt;br /&gt;There's even more, Narro looks for the access key in the original text and if it's found also in the translated texts, it automatically sets it. If it's not, it sets the first letter automatically.&lt;br /&gt;&lt;br /&gt;In gettext access keys are usually preceded by &amp;amp; or _ . But I keep running into situations where there is a _ or &amp;amp; and it's not an access key like "HELP_TEXT here" or "Starting $SERVER_NAME". If you're reading this and you eat gettext for breakfast please help me find a secure way to determine access keys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-2995367685007345935?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/2995367685007345935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=2995367685007345935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2995367685007345935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/2995367685007345935'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/05/pain-of-gettext.html' title='The pain of gettext'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-5932260655897243363</id><published>2008-04-09T19:07:00.002+03:00</published><updated>2008-04-09T19:12:09.814+03:00</updated><title type='text'>Sucess story</title><content type='html'>Firefox is closing up for RC1 and there's a lot of testing going on. I received a report that stated that on MacOS, the mac + Q combination didn't close the browser as expected.&lt;br /&gt;&lt;br /&gt;So I immediately figured out this is about a command key, so I went off and looked in Narro 'Q' (the simple quotes do an exact search) in the original texts. Found it. It was translated as 'E'. Fixed it. Great, but I thought there might be more mistakes like this. So I looked up every context that has 'cmd' in it. Got 7 pages of command keys, access keys and texts. All I had to do is check each original text that has only one letter, remember I was looking for command keys. In the 7 pages I found about 20 command keys, checked them all. Now imagine how long would it take if I didn't have Narro.&lt;br /&gt;&lt;br /&gt;With Narro it took 1 minute.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-5932260655897243363?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/5932260655897243363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=5932260655897243363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5932260655897243363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/5932260655897243363'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/04/sucess-story.html' title='Sucess story'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1577293558447846290</id><published>2008-04-08T00:03:00.005+03:00</published><updated>2008-04-08T00:40:00.306+03:00</updated><title type='text'>Project management</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_I2bh26gyfUU/R_qMliRR6DI/AAAAAAAAAnA/pCd_N2j4-CM/s1600-h/narro+project+management.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_I2bh26gyfUU/R_qMliRR6DI/AAAAAAAAAnA/pCd_N2j4-CM/s320/narro+project+management.png" alt="" id="BLOGGER_PHOTO_ID_5186612497352878130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's been two weeks. I had some work besides Narro, so the weeks went a little bit slower for Narro.&lt;br /&gt;&lt;br /&gt;Still I got to do a lot of stuff:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;finally there's a project management page with export and import with nice progress bars&lt;/li&gt;&lt;li&gt;there's a progress bar in the translation page too so you can see how you're going&lt;/li&gt;&lt;li&gt;there are now three plugins: entity checker, punctuation checker and spell checker&lt;/li&gt;&lt;li&gt;there's a new preference, where you can paste some characters that aren't on your keyboard; you'll see them when you translate and you can use your mouse to add them&lt;/li&gt;&lt;li&gt;many thanks to Huda Sarfraz for his suggestions; I added some file icons to help you while browsing&lt;/li&gt;&lt;li&gt;the comments from the dtd/ini/inc files are now visible together with the context (see an &lt;a href="https://l10n.mozilla.org/narro/narro_context_suggest.php?p=2&amp;amp;c=261&amp;amp;tf=2&amp;amp;st=1&amp;amp;s=&amp;amp;gn=1"&gt;example&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;I know I promised to lay low with the new features, but I just can't resist. But I'll leave the database structure alone until release and having that in mind, the current &lt;a href="https://l10n.mozilla.org/narro"&gt;Narro installation&lt;/a&gt; for Mozilla projects will be stable, so have fun with it.&lt;br /&gt;&lt;br /&gt;I'll run an import on Firefox CVS and Thunderbird CVS every night, so if you feel like giving it a try, just export the project in your language and compare it with what you got. Note that Narro will check if the access keys exist in the translated labels.&lt;br /&gt;&lt;br /&gt;If you have comments, ideas or suggestions, don't be shy to share them.&lt;br /&gt;&lt;br /&gt;I'm pushing hard for a first release in the begining of May. Until then I hope to add single file export/import, user management, user profile page with statistics and RSS notifications when new untranslated texts are imported.&lt;br /&gt;&lt;br /&gt;Don't forget to poke the &lt;a href="https://l10n.mozilla.org/narro"&gt;Narro installation&lt;/a&gt; to see what I'm talking about here. If you are experiencing long timings, it's because the server is pretty low powered and because that installation has over 40 languages in it, although Narro is meant to be installed for each localization team and you should have only the languages that you translate in or poke for ideas. Or just get a powerful server and put them all in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1577293558447846290?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1577293558447846290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1577293558447846290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1577293558447846290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1577293558447846290'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/04/project-management.html' title='Project management'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_I2bh26gyfUU/R_qMliRR6DI/AAAAAAAAAnA/pCd_N2j4-CM/s72-c/narro+project+management.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6721335980197603638</id><published>2008-03-28T14:58:00.002+02:00</published><updated>2008-03-28T15:03:35.284+02:00</updated><title type='text'>XPI or CVS ?</title><content type='html'>I just discovered that there are some localization teams that have a language pack translated but don't have a CVS structure translated.&lt;br /&gt;&lt;br /&gt;I remembered that before I got Romanian firefox released, I created a script that made the conversion from the CVS structure to the language pack and it was a nightmare.&lt;br /&gt;&lt;br /&gt;Anyway, I think in Narro you should have the CVS structure. You could have the language pack structure and export that, but you do fight to get in CVS right ? So I assume that having in Narro a converter from CVS to XPI and XPI to CVS is a must, so I'll start working on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6721335980197603638?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6721335980197603638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6721335980197603638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6721335980197603638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6721335980197603638'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/xpi-or-cvs.html' title='XPI or CVS ?'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-9040396299859575931</id><published>2008-03-27T10:20:00.002+02:00</published><updated>2008-03-27T10:32:10.020+02:00</updated><title type='text'>Upcoming release</title><content type='html'>I've decided to stop adding new features and start setting things up for a first public release. This upcoming release will have:&lt;br /&gt;&lt;br /&gt;- only support for mozilla projects and narro itself&lt;br /&gt;- user and permissions management&lt;br /&gt;- voting for suggestions, editing, deleting, validating&lt;br /&gt;- file browsing&lt;br /&gt;- searching&lt;br /&gt;- import only through command line&lt;br /&gt;- export via web and command line&lt;br /&gt;- entities checking, punctuation checking&lt;br /&gt;- probably some other things I've forgotten&lt;br /&gt;&lt;br /&gt;There are several functionalities that are there but I just don't have time to test them for this release:&lt;br /&gt;&lt;br /&gt;- gettext po support&lt;br /&gt;- native sdf open office support&lt;br /&gt;- spell checking&lt;br /&gt;- single file export/import&lt;br /&gt;- import via web&lt;br /&gt;&lt;br /&gt;How about the future ? Here are some features from the future:&lt;br /&gt;&lt;br /&gt;- languages list page with translation progress&lt;br /&gt;- rss/email notifications when new untranslated texts are ready to be munched&lt;br /&gt;- an api for interacting with other tools, such as transifex&lt;br /&gt;- translation statistics for users and profile (user's quality, speed, volume, etc)&lt;br /&gt;&lt;br /&gt;So stay tuned for the release announcement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-9040396299859575931?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/9040396299859575931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=9040396299859575931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/9040396299859575931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/9040396299859575931'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/upcoming-release.html' title='Upcoming release'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1395808505673040923</id><published>2008-03-27T10:12:00.003+02:00</published><updated>2008-03-27T10:20:06.376+02:00</updated><title type='text'>What goes in, must come out</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_I2bh26gyfUU/R-tXHSRR6CI/AAAAAAAAAmg/AFKjLQerT9s/s1600-h/narro-import-export.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_I2bh26gyfUU/R-tXHSRR6CI/AAAAAAAAAmg/AFKjLQerT9s/s320/narro-import-export.png" alt="" id="BLOGGER_PHOTO_ID_5182331578894903330" border="0" /&gt;&lt;/a&gt;Import and export for the masses is now &lt;a href="https://l10n.mozilla.org/narro/narro_project_list.php"&gt;there&lt;/a&gt;. Just login or register and then login and you'll see those buttons.&lt;br /&gt;&lt;br /&gt;Since I didn't receive feedback from all languages I've imported, I've decided to let you do the first import for your language. So go ahead and do it.&lt;br /&gt;&lt;br /&gt;Things are pretty stable now and the next step is to pull a fresh cvs copy daily and let people use Narro as an alternative.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Until then&lt;/span&gt;, please take into consideration that nothing stays in Narro, so if you do use it, please export your work.&lt;br /&gt;&lt;br /&gt;Happy testing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1395808505673040923?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1395808505673040923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1395808505673040923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1395808505673040923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1395808505673040923'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/what-goes-in-must-come-out.html' title='What goes in, must come out'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_I2bh26gyfUU/R-tXHSRR6CI/AAAAAAAAAmg/AFKjLQerT9s/s72-c/narro-import-export.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-1967153377367419822</id><published>2008-03-19T09:33:00.000+02:00</published><updated>2008-03-19T09:47:09.510+02:00</updated><title type='text'>Access Keys</title><content type='html'>So I initially started on to work on the export/import operations. Although they were working great, the code was commentless and needed beautifying. During that time I went on and made some modifications to the database. I think I have now a solid database structure, so the first release will be soon.&lt;br /&gt;&lt;br /&gt;Another thing that I've discovered is that people who want to help translating do not know what access keys are. Or if they know, they don't look in the menu to see if there's a conflict. So I decided to adopt a new approach on this topic. The access key for the original text and the access key for the translated text are now tied to the context. Selecting the access key is up to the person who validates a suggestion for a context. Regular users will not have to type in "M&amp;amp;ove" but just "Move".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_I2bh26gyfUU/R-DC9rjzP7I/AAAAAAAAAmM/mhEPsJkum8g/s1600-h/narro+access+key.png"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_I2bh26gyfUU/R-DC9rjzP7I/AAAAAAAAAmM/mhEPsJkum8g/s320/narro+access+key.png" alt="" id="BLOGGER_PHOTO_ID_5179353936396763058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, I've changed the voting system. Users now vote for a suggestion only for that context. It made no sense seeing that a suggestion had 10 votes but still someone validated the one with no votes because in that context it was more appropriate.&lt;br /&gt;&lt;br /&gt;Until now I didn't care about showing the dtd comments or ini comments in Narro. But since in Mozilla, the context is quite small, I've decided to import the comments too as context comments. You can opt in to see them by pressing a button.&lt;br /&gt;&lt;br /&gt;I haven't posted yet any code on svn as I'm still cleaning up and don't want to put a mess in there.&lt;br /&gt;&lt;br /&gt;I'll have something there by the end of this week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-1967153377367419822?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/1967153377367419822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=1967153377367419822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1967153377367419822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/1967153377367419822'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/access-keys.html' title='Access Keys'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_I2bh26gyfUU/R-DC9rjzP7I/AAAAAAAAAmM/mhEPsJkum8g/s72-c/narro+access+key.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-961250984174094308</id><published>2008-03-11T00:29:00.001+02:00</published><updated>2008-03-26T17:35:48.349+02:00</updated><title type='text'>Endurance test</title><content type='html'>Although I designed Narro to work with only a pair of languages, I received some feedback that some languages, like spanish for example have various forms that would like to be used on the same translation site.&lt;br /&gt;&lt;br /&gt;On the other hand, the romanian translators want to see how was the text translated in a few key languages, like french, spanish, italian.&lt;br /&gt;&lt;br /&gt;So now Narro supports multiple languages. It took me some time to change all the code, mostly carefully search and replace.&lt;br /&gt;&lt;br /&gt;Even so I would not recommend keeping all the languages in one instance, I just don't see the point in that, this is a tool that is supposed to help people who translate from one language to another, so displaying 100 languages isn't productive.&lt;br /&gt;&lt;br /&gt;Mozilla is kind enough to offer me a playground, so feel free to &lt;a href="https://l10n.mozilla.org/narro"&gt;test the progress.&lt;/a&gt;&lt;br /&gt;I've imported Firefox 3 into 57 languages as an &lt;span style="font-weight: bold;"&gt;endurance test&lt;/span&gt; and the speed is still good. Of course if you install only a few languages that you need you'll have better performance.&lt;br /&gt;&lt;br /&gt;You might want to register first. Since it's a playground, by registering you'll receive super powers like delete, edit and validation rights.&lt;br /&gt;&lt;br /&gt;Don't take anything for granted, everything you put in there is not going to stay. An official installation will be available soon in case you want to use Narro to translate software in your language.&lt;br /&gt;&lt;br /&gt;Stay tuned until I add the export button so you can see how easy it is to manage your locale.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-961250984174094308?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/961250984174094308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=961250984174094308' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/961250984174094308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/961250984174094308'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/endurance-test.html' title='Endurance test'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-3349392036261906427</id><published>2008-03-06T19:51:00.000+02:00</published><updated>2008-03-06T20:36:11.937+02:00</updated><title type='text'>Code like crazy</title><content type='html'>That's what I do these days. Code like crazy. Mostly on Narro.&lt;br /&gt;&lt;br /&gt;The first public release (a thing that is installable by anyone) should come in a month.&lt;br /&gt;&lt;br /&gt;Now let me make this perfectly clear. This application is meant to help localization communities to do a better job, by allowing more people to translate, not for the developers to manage translations. That's the reason why it works only with one pair of languages. Original and translation. If you're already thinking at de-CH and de-DE, there are no worries. You can just take the suggestions from de-CH and import them into de-DE. Or the other way around.&lt;br /&gt;&lt;br /&gt;When I started to write the application, I used Drupal's user management system because I just didn't need one of my own. I was thinking of an application that just did the job for me and only me. Since people got interested and wanted to use it, I thought Drupal was way too much overhead. I've got qcodo in there, I'll most probably use some ZendFramework as well so Drupal had to go.&lt;br /&gt;&lt;br /&gt;I've wrote a simple user management system, login procedure, registration, permission and preferences. I still have to do a forgotten password thingie.&lt;br /&gt;&lt;br /&gt;I've wrote a plugin handler and a first plugin. I'm still not sure about the need of these plugins, but hey, I need a special thing for Romanian, and I cannot distribute that for all of you. I have in the database s and t with comma under and I want people to be able to use my application with s and t with cedilla as well. Because we have people typing both of these caracters. Yes, it's madness, but I got that now in a plugin. Just delete it if you don't need it. Or maybe I'll add an active flag so it can be deactivated.&lt;br /&gt;&lt;br /&gt;The application still works like the only &lt;a href="http://narro.maimult.ro/qdrupal/narro_project_list.php"&gt;working copy available online&lt;/a&gt;. Yes, that's the one with Drupal in it. Get over there and try it if you're curious. But I'm really using that one for the translation of those projects, so don't add thousands of suggestions, please. You can add suggestions without an account in the project named &lt;a href="http://narro.maimult.ro/qdrupal/narro_text_context_suggest.php?p=4&amp;amp;tf=2&amp;amp;st=1&amp;amp;s="&gt;Firefox 3 (for Narro tests)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am now working on the import/export procedures. I used to do this in the command line and I had cvs/svn commands there so I'll have to change this a bit. I need to build a page for import/export. Let me describe how would you import and export Firefox using Narro. I have a basic bash script to execute all these commands.&lt;br /&gt;&lt;blockquote&gt;cvs -z3 -d:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r MOZILLA_1_8_BRANCH mozilla/client.mk&lt;br /&gt;cd mozilla&lt;/blockquote&gt;Here I create a file .mozconfig with this in it:&lt;br /&gt;&lt;blockquote&gt;mk_add_options MOZ_CO_PROJECT=browser&lt;br /&gt;mk_add_options MOZ_CO_LOCALES=ro&lt;br /&gt;mk_add_options LOCALES_CVSROOT=alexxed%gmail.com@cvs.mozilla.org:/l10n&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I need to do the above only once, for my first checkout. Then, each time I want to import the changes from CVS in narro I execute:&lt;br /&gt;&lt;blockquote&gt;make -f client.mk l10n-checkout&lt;br /&gt;rm -rf ../l10n/en-US&lt;br /&gt;make -f tools/l10n/l10n.mk create-en-US&lt;br /&gt;make -f tools/l10n/l10n.mk check-l10n&lt;br /&gt;cd ../l10n&lt;br /&gt;rm -f mozilla.tar.bz2&lt;br /&gt;tar cjf mozilla.tar.bz2 *&lt;/blockquote&gt;The next step is to run the php script to import &lt;span style="font-weight: bold;"&gt;mozilla.tar.bz2&lt;/span&gt;.&lt;br /&gt;&lt;blockquote&gt;php importer.php --import-mozilla --project_id 2 --archive mozilla.tar.bz2&lt;br /&gt;&lt;/blockquote&gt;That's it. On my copy, I execute all the commands inside importer.php, but I cannot assume that you'll have cvs, make on the server where you're installing Narro. So you'll just do the cvs thing and produce the archive, then upload it in Narro. If you do have a server, well you'll just add a cron to do it all for you.&lt;br /&gt;&lt;br /&gt;If I had to start a new translation, I'd just have to make an archive only with en-US in it.&lt;br /&gt;&lt;br /&gt;The export operation is now done this way:&lt;br /&gt;&lt;blockquote&gt;php importer.php --export-mozilla --project_id 2 --archive mozilla.tar.bz2&lt;/blockquote&gt;Just untar the archive over the l10n directory that you have. I am doing it automatically, the only thing I do is review the translation with a simple cvs diff command. It's not necessary, but I just like to check before I commit.&lt;br /&gt;&lt;br /&gt;Now if all this sounds complicated, I understand. Mozilla promised me a server so I could install Narro there and you won't have to know nothing about cvs at all. You'll just push export and import buttons and that's it.&lt;br /&gt;&lt;br /&gt;If you're a cvs freak and this sounds scary to you, I can give you more details in the comments upon request, as this is not the subject here.&lt;br /&gt;&lt;br /&gt;Ok, that's it for today's briefing, see you in a few days with some pictures and demos and further development news.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-3349392036261906427?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/3349392036261906427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=3349392036261906427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3349392036261906427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/3349392036261906427'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/code-like-crazy.html' title='Code like crazy'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5993308135121947556.post-6517245682064058118</id><published>2008-03-03T17:22:00.000+02:00</published><updated>2008-03-03T17:25:23.289+02:00</updated><title type='text'>Narro is now open</title><content type='html'>Here starts the adventure of my first open source project, &lt;a href="http://code.google.com/p/narro/"&gt;Narro&lt;/a&gt;&lt;br /&gt;If you're interested, please subscribe to this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5993308135121947556-6517245682064058118?l=narro-project.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narro-project.blogspot.com/feeds/6517245682064058118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5993308135121947556&amp;postID=6517245682064058118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6517245682064058118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5993308135121947556/posts/default/6517245682064058118'/><link rel='alternate' type='text/html' href='http://narro-project.blogspot.com/2008/03/narro-is-now-open.html' title='Narro is now open'/><author><name>Alexandru Szasz</name><uri>https://profiles.google.com/100166351210802892856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-dZMHQsEuGbg/AAAAAAAAAAI/AAAAAAAALn4/xCByuJpt7tI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
