HIG spacing tweaks for zoom, before
after.
and wordcount, before
after.
Make align-test to clearly illustrate zoom's alignment problem.
Fix it simply by not [y-]expanding the fixedline.
Apply alignment fix to zoom.
Tweak Find and Replace
Add <vbox>s and use cnt:expand="false" to stop vertical button expansion.
The Dutch version of the dialog.
A dropdown test, with nice mixup of languages.
With big 14pt font.
Look into running valgrind and make simple vbox test. The
horizontal lines should be just 10 points, one spacing, apart.
Mail Michael.
Try some quick fixes for removing the spacing
between empty vboxes, but they break other things.
Look into boxtest and properties. Finally I grok what Michael
was talking about: after adding a <vbox><table> pair we got
a flood of 'missing property' errors resulting in broken visual
output. None of the property settings work, resulting in an
equal sizing of each button.
MD-BIOS-BUG: 8252 timer not connected to IO-APIC.
Kernel-panic: not syncing: IO-APIC + timer doesn't work.
Play a bit with BIOS, eventually it boot using acpi=no.
gthr-default.h:463: undefined reference to `___gthr_win32_mutex_init_function' bitmap_allocator.cc:53: undefined reference to `__Unwind_SjLj_Register'
Find that Find & Replace in en_GB and nl has a funny title:
'Including Styles'. Turns out to be an unfortunate mixup of
generating localize.sdf files.
Kludge-up a fix for generating localize files, test and commit
patches.
Test and commit patches, such as Michael's beautiful new
table-based Find & Replace dialog. Make mental note to
add margins.
KEY_RETURN
handling code right there, in vcl/dlgctrl.cxx. Debug into this
and find WB_DEFBUTTON is not set ... but attribute "defbutton"
fixes this. The xml code had been using attribute "def-button",
which setProperty complained about, and I changed to "default".
Great. Fix in all dialogs, prepare patch. Feeling proud where
I could just as well feel silly for this. Not bad ;-)
bin/gub lilypond linux-x86::lilypond\
darwin-ppc::lilypond darwin-x86::lilypond \
mingw::lilypond linux-ppc::lilypond \
freebsd-x86::lilypond freebsd-64::lilypond
[not counting the subsequentmake -f lilypond.make gub3-restto wrap the the installers and build the documentation].
Apply Michael's boxtest patch and look into this. Somewhat
mystified by the patch, but more by its result.
Play a bit with odd layout bug that Michael sent me. Try
lots of different things with alignment settings, moving h/vboxes
around, border="0", spacing="0", almost fooled into fixing it.
Hmm, this really looks like a layout bug. Nice.
[All]
[User Defined]
[Number]
[Percent]
the cursor jumps back from Number down back up to User Defined.
Debug into for a while, but gdb seems not the easiest way to
gain insight here.
Back to dialog work. With listboxes filled, the
Numbers tabpage almost starts to look and behave like a
real dialog.
Unfortunately, I cannot seem to get the Hide/Show magic of
the Currency listbox to behave. Even with a forced redraw
the listbox sizes like a monster.
I'll probably settle for a client code change: To use
disable/enable rather than hide/show for the ENABLE_LAYOUT
case.
// Gr"o/se am TabControl nur dann setzen, wenn < als TabPage
if (aCtrlSiz.Width () < aSiz.Width ()
|| aCtrlSiz.Height () < aSiz.Height ())
pTabCtrl->SetTabPageSizePixel (aSiz);
When our layout::TabPage is very tall and narrow, this
will make the dialog narrow. The requested height is
too big and ignored (Ugh).
vcl/ListBox::CalcMinimumSize () respect
line-count, also when listbox is not a dropdown. Set Category and
Format listbox's line-count=8.
sal_uInt16 SvxLanguageBox::InsertLanguage (LanguageType const, sal_uInt16)
{
return 0;
}
sal_uInt16 SvxLanguageBox::InsertLanguage (LanguageType const, bool, sal_uInt16)
{
return 0;
}
SvxLanguageBox is a 400 loc wrapper that looks up the string to insert for LanguageType
SvtLanguageTable, which is a 100 loc wrapper for an array
SvtLanguageTable::SvtLanguageTable ()
: ResStringArray (SvtResId (STR_ARR_SVT_LANGUAGE_TABLE))
I wonder if we can do away with all this Res, Sv and Svx cruft and just have
a std::map with languages, even if we have to fill them from Res* for now.
Sometimes I wonder why so much of our code is made up of wrappers and or
reimplementations of std::*.
When reducing the number of entries in the format listbox so that
it is not taller than the TabControl window, a vertical scrollbar
appears. Nice. So if we can enforce a maximum height for
listboxes, things should be fine here.
Something interesting shows up when not running Format Cells on a
remote X: the width of the whole dialog seems to be that at which
the layout::TabPage is truncated. It seems that
layout::TabPage sometimes gets the width from the wrong source.
zypper in -flyn saxon
wget -P build/ooo300-m7/external/StAX\
'https://stax-utils.dev.java.net/source/browse/*checkout*/stax-utils/lib/jars/jsr173_1.0_api.jar'
./configure [..] --without-java --with-system-saxon
make SOLAR_JAVA=TRUE
Format Cells: Make the .xml layout nice.
Crudely break the Select & Modify loop only to
find that the integrated dialog looks like a mess. It may well
be that the Modify Select handlers need to do something
here.
However, when the overfull Format listbox is hidden,
it still looks all wrong.
Waiting for device /dev/md0 to appear: ok node name not found invalid root filesystem -- exiting to /bin/shThe new mkinitrd (2.4-16) delays bringing up md until after root is mounted. That does not work with root on md. Interestingly, the factory update blondly removes the working kernel. I wonder why that is. File n#421369 and n#421379.
Find & Replace visibility cleanups: use small symbol, add title to
.xml, set help id, make [push]buttons not expand.
Fix MoreButton, use of ResId in Find&Replace. Set symbol
and fix symbol size calculation.
that appeared in the status area.
Ah, no protocol backends get installed by default. Is that
really what I want? Well, let's install some backends then.
Hmm, searching for empathy does not reveal any protocol
backends. Neither does zypper info.
Wow, I feel terribly clueless.
Are there any backends in the package repository at all or
would I need to download them separately? Naah.
Kindly ask Ubuntu
for a clue
and file n#420711.
Generate find-&-replace.xml. Find and fix a couple of
bugs in src2xml.py. Of all widgets at the same x,y position in
.src, only the last one survived. After fixing that, and adding
support for [Sfx]ModelessDialogs, it "worked" right away.
Fix some more src2xml bugs such as: translate hide=true to show=false
attribute,
use _label instead of _text for pushbuttons. Then
manually tweak the .xml file.
For Writer,
and also for Calc.
git clone http://lilypond.org/vc/ooo300-m3.git wget http://lilypond.org/vc/ooo300-m3.git.tar # with topgit features
wget http://lilypond.org/vc/ooo300-m1-split.git.tarbut could not figure out a nice toplevel way to build it.
With the sizing [almost] right, I find that mousing does not
work. That's a problem I saw before and spent quite some time at,
finding no problem and no easy fix other than delaying the
actual time of creating the dialog. The thing is, we already
create this thing delayed now...
.XML files.
After removing
just one C-style static cast, there already are
empty tabpages. Yay!
Removing the remaining C style static casts reveals
the tabpages' content and fixes the push button
functionality. Still quite a lot of buttons, though.
:-)
Fix button visibility.
It turns out that in this dialog all buttons are set to be
hidden by default. Although the show="false"
attribute is processed by the layout engine and gets set as
a property initially, lateron the layout engine decides to
just make every new widget visible anyway. Removing this
unnecesary code fixes this dialog's button visibility.
Now this begins to look like it, resizing the dialog manually
produces
Make a layout'ed version of SfxTabDialog available alongside
the plain SfxTabDialog using cpp hacking. Without much
effort--adding an ID to <tabcontrol> and setting all
widgets' IDs in the C++ code--it indeed runs as a standalone test.
There seems to be some confusion about where to add tab pages
and where/how to remove buttons, though :-)
Finish new sort options embedded layout tab implementation.
The dialog still looks ugly because the TabControl dialog
parts are still defined by .src, I'll have to look into that
soon.
now builds m28 on a clean checkout.git clone http://lilypond.org/vc/ooo-build.git cd ooo-build ./autogen.sh --with-distro=SUSE ./download # runs: git clone http://lilypond.org/vc/dev300-m28.git make
layout-simple-dialogs-sc.diff fails to
apply---which I annoyingly cannot seem to reproduce. Make a
remark on how GIT will do away with irreproducible patching
problems and get valuable input from _rene_ on his ooo-build
requirements.
Get layout::SfxTabPage plugin to work. After some
experimenting I get two of the TabPage's checkboxes
displayed. Fold this into a patch that does not require
client code changes. This is a much more fool proof method
for using a layouted TabPage in an otherwise .src sfx2
tabbed dialog. It also is much smaller code wise, all
layout additions in sfx2/tabdlg.cxx can be removed again.
git clone http://lilypond.org/vc/dev300-m28.git # r13448
The layoutdialogs CWS is finally nominated. It is exactly 12
weeks ago that I started the build bots to get it QA'd.
Apparently my timing was very bad, it had to wait for the
3.1 merge window to open up. In the meantime the header
cleanup has introduced some conflicts. Trying to
resolve
them it turns out
that cwsresync
FILENAME is broken. Resync whole CWS to m28.
Amused and saddened at the same time finding this pathetic attempt
at social engineering in my mailbox this morning.
Implement missing ListBox functionality for Move/Copy sheet. Now also the
Sheet1, Sheet2, Sheet3 entries are showing in the listbox.
Find that the first listbox which uses a dropdown does not
move with the dialog. Here is what happens when selecting
the first listbox to change the "To document". Look into
this and eventually decide to a clean [re]build of dev300-m25.
Convert Move/Copy sheet dialog. Here is the original.
It looks fairly simple and the full conversion is
finished well under two hours.
When looking at the result however, I find that ListBox
needs more love. A couple of methods are only stubbed
which makes that the Sheet1, Sheet2, Sheet3
entries go missing.
Rename layout::QueryBox to MessageBox and add wrappers for
the other message boxes.
also available through ooo-build.gitgit clone http://lilypond.org/vc/dev300-m25.git
Integrate the--at Delete Sheet dialog directed--QueryBox implementation
and use it for Delete Sheet. Replaced the YES button's text with
the name of the action--Delete Sheets--and use that for the Dialog's title too.
Make blog images and find that an alert image is missing.
Other than that, even such a small simple dialog is a lot
nicer when converted to layout, me thinks.
After adding a FixedImage, find that the QueryBox's image
has four images encoded into one png. To use it, there is
*custom code* vcl/ImageList: A full fledged class with 36
methods, some 650 lines of code. Un-be-lie-va-ble. There
is also a bit alignment work to do and the Dutch translation
of the question wrongly uses the singular from.
Debug into why the radio button grouping (callback) is not
fired when the radio button is toggled from the code. Find
that this is controlled by a flag RadioState. Setting this
when toggling the radio button fixes the radio grouping.
Make insert-sheet dialog look perfect.
Add radio groups to zoom and insert-sheet dialogs. Look
into radio button grouping. We already have code for that which
looks real nice, but it only works work when pushing a radio
button in the GUI. When the state is changed from the code (to
100% in this example), you can get this...
Implement {Get,Set}{Pointer,Text} wrappers. Manually set
HelpId on insert-sheet, wordcount and zoom dialogs. Initial
conversion of insert sheet dialog. There are some issues
with radio button grouping and callbacks. None of the two
Position buttons are selected. When From File is selected,
the Browse button is enabled through a callback. Also,
the MultiListBox must be three or four lines tall.
git clone http://lilypond.org/vc/ooo-build.git cd ooo-build ./autogen.sh --with-distro=SUSE ./download # runs: git clone http://lilypond.org/vc/dev300-m21.git make
copy ("$sourcepath", "$destdir$destination") \
|| die "Can't copy file: $!";
what really worries me is that this kind of crap does not get fixed right away.
Yay, rejoice! I runInstallation problem: cannot find XML file: string-input.xml
python toolkit/src2xml/source/src2xml.py --post-process \
sc/source/ui/src/miscdlgs.src > sc/uiconfig/layout/miscdlg.xml
cut out the appropriate part
as string-input.xml and another dialog is
converted.
When it is resized, you can even see the
dialog's title! This should be good enough for my blog.
Trivia such as manual touch-ups, installation,
internationalization and submitting as ooo-build
patch can wait till after lunch :-)
Implement Get,Set{,Smart}HelpId () wrappers. Fixes Help button
in rename sheet dialog.
Find that our build process cannot handle ^C. Another terribly
bad error message, but at least there is a log file. We will
happily create an empty library file which fails to register
but will not be rebuilt . Finally, test translated dialog.
/var/log/ushare.log and time stamps.
git clone http://lilypond.org/~janneke/vc/ooo-build-m19.11.git/.git http://lilypond.org/~janneke/software/ooo/git-11.diff
Fix OO.o sort dialog integration bug. Finally the screenshot
looks as it should.
At last: fix mousing of layout tab. Notice the subtle
eye-candy mouse-over colouring of the uppermost check box.
Most probably I'm just too smart, stubborn, arrogant or dumb
for my own good. The delayed creation hooplah in the old
.SRC code apparently is there for a reason. Interestingly
this delayed creation breaks sizing again but I know a bit
more about that now :-)
Fix embedded layout tab sizing. After switching tabs, buttons
stay visible too! Only the mousing bug left now.
Rewrite testrc.in and add brand-dir hack to
test.cxx to support upstream as well as
ooo-build installs. Update README.
(16:23:16) kohei_: janneke: Enable natural sort is not upstreamed yet.
See Issue 26565 (the number deeply stuck in my memory).
(16:23:23) IZBot: Spreadsheet PATCH NEW P3 Natural Sort Option in Sort Dialog
http://qa.openoffice.org/issues/show_bug.cgi?id=26565
(16:23:53) kohei_: janneke: that's in fact my very first contribution to OOo many years ago,
and amazingly it's not integrated yet. ;-)
Get hello world with embedded layout tab in .src sort
dialog. Yay! Luckily, there's more work to do. The sizing
here is not all too well. The dialog buttons disappear
after switching to the Sort Criteria tab. The embedded
layout options tab cannot be moused, only keyed. Some
dynamic translated strings are a hack.
VCLXWindow* pParentComponent = VCLXWindow::GetImplementation( xWinParent );
returns 0x0 in vclxtoolkit::ImplCreateWindow(), while it works
in helper.cxx, just before calling.
Go on a wild goose chase for memory corruption.
Coffee break.
Revert any ooo-build diffs since m12 and study dev-m10 toolkit diff.
No interesting changes.
Lunch break.
Find that with the new three layer install/rpath feature having
toolkit/unxlngx6.pro/lib or $SOLARVER/lib in LD_LIBRARY_PATH provokes
this breakage.
Document workaround to copy the freshly library to the install location
an prepend install lib directories to LD_LIBRARY_PATH in README:
cp -f ../..$INPATH/lib/libtkx.so $OOO_INSTALL_PREFIX/openoffice.org/basis3.0/program export LD_LIBRARY_PATH=$OOO_INSTALL_PREFIX/openoffice.org/basis3.0/program\ :$OOO_INSTALL_PREFIX/openoffice.org/ure/lib
cvs [checkout aborted]: no such tag cws_dev300_sb83
fatal error C1083: Cannot open include file: 'tools/solar.h': No such file or directoryseem simply ridiculous, so try another one http://buildbot.go-oo.org/buildbot/Win-XP2/builds/309 http://buildbot.go-oo.org/install_sets/Win-XP2-309-layoutdialogs-install_set.zip
.evolution/cache/tmp/mail.log.bGgSxo:0:1210165357:IMAP-opdracht is mislukt: SELECT (8101)Thunderbird thinks the same; use gmail for now.
./program layout.
Solaris, of course, is doing something else quite different, though. They are trying to make the transition from a proprietary customer/supplier relationship to trying to develop an Open Source community (..) We don’t have a lot of precedent for projects who try to go in this direction, but I suspect they are skipping a step when they try to go to the end step without bothering to try to make themselves open to outside developers. And by continuing to act like a corporation, they end up shooting themselves in the foot.A nice wording of the sentiment in the FLOSS community. I have been wondering for quite some time now how it is possible that even small projects like LilyPond and GRUB 2 seem to have a much more lively user and developer community than OpenOffice.org has. Is office software so much more unsexy than music notation or bootloading? Is OpenOffice.org so much more bug-free that users/developers don't need to get involved? Are we as developers not taking enough pride in our work? Is OpenOffice still too young? Is there not enough competition, too little eyeballs? Are we hurt by artificial (corporate) agenda's or a cultures that prevent writing of beautiful code? So how is this transition from being a corporate project which happens to publish most source code to a true organic open source project supposed to happen? How can we speed this process up, or even prevent it from being slowed down? Should we seek to divide and make work of our Go-OO.org community: we fix getting your patches in and deliver a buildable tree? It is doubtfult if that is what would serve OpenOffice best. But what can we do? What are people at Sun thinking, are they seeing what we are seeing? Is there any guidance in this or is there too much guidance, are there expectations or dreams, is there a plan?
#348669 - zypper should print progress to stderr #348676 - zypper should list package descriptions/summaries
Poke at both implementations for a few hours and finally
find that the [re]draw and detachment problems arise from
the silly fact that at time of creation the DialControl
Plugin's parent is 0. Apparently this does unfixable
damage, at least not fixable by reparenting later. Anyway,
the dialog now looks and moves fine.
Visit Ei/PSI
grand opening. Inspiring and sobering talks by Whitfield
Diffie, Andrew Odlyzko, Ian Brown and Bruce Schneier. It is
amazing to watch the vastness of the domain that people like
Andrew and especially Bruce can choose to talk about, what
stretches they make and how they just get away with it. No,
that's not it. Great speakers understand the art of how
talking about big and profoundly simple things, that could
others easily cost their credibility and respect, makes them
bigger.
Set out to make fresh pasta today. A couple of years ago I
tried it for the first time, inspired by a lovely meal that
Han-Wen prepared for us. It was a mixed succes then, some
bits were really too thick. This time it went very well
though. I learned again that big eggs are much bigger here
than
Marcella Hazan buys them in Italy. Although I tried to
use the original method of stretching and flattening the
pasta for a bit, in the end I used a common Dutch rolling
pin and got a nice evenly thin sheet of pasta.
Get plugged-in svx:DialControl to hello world through
UnoTunnel. When the dialog pops up, the size is already
right! The contents of my editor window show up as background,
but no complaints for a first result.
And it gets even better, clicking on the expected location
shows a functioning DialControl. Woo!
It doesn't get much better, though. Altough the DialControl
is reparented using the ModalDialog from the UnoTunnel, they
somehow act as separate windows. Spend rest of day poking
these separate/unattached window, background and redraw
issues.
zypper source-install gcc42) but
fail to find any references to visibility in the changelog.
Hmm.
openoffice.org/basic3.0 that our
standalone test program barfs on, the upstream build suffers
from a "missing vcl resource"and images are broken. Rush to checkout and download ooh-m12 before dinner, that should work.
d.lst files and the scp2
install snippet.
Make VBox, HBox vcl wrappers usable. Test with recover.cxx,
but revert to using individual visibility instead because of
spacing/sizing problem. Running the recovery dialog from
DEV300-m2 has a pleasant surprise: the progress bar has been
updated to use a more modern GNOME-like one.
Find that FixedLine and zoom.cxx have been extended
upstream. Implement FixedLine.IsEnabled () and add new View
Layout functionality to zoom.xml; merge and create minimal
diff for zoom.hxx, zoom.cxx.
After running the upstream
dialog, I realise that Zoom factor and View layout parts
are in columns, alongside each other.
After adding an extra vbox and hbox this is what the new
layout-based zoom dialog looks like. Now I need to redance
the whole translation hoopla for the new strings.
Add Simple/Advanced mode to recovery dialog. I loosely
based it on
the design made by Sigi in bug
#194434.
Only loosely, because I'm not sure how to do the floating
box with documents. But also because I am no particular fan
of the hidden right-click functionality anyway, which then
has to be documented and is also bothering the casual user.
Do we also need to display the recovery status with each
document?
How is that for helpful? Time for another bug report :-)<!-- DT:Rich --> <p>GNU LilyPond is a music typesetter. </p>
sunstudio12.../ld: unable to find version dependency `UDK_3.0' sunstudio12.../ld: unable to find version dependency `SALHLP_1_0' sunstudio12.../ld: anonymous version tag cannot be combined with other version tags
Do obvious thing for CancelButton, fail.
Try less obvious things.
Redo obvious CancelButton thing. Look. Notice
silent failure of VCLXButton::setLabel, setProperty.
while running standalone TEST application from CWS. For the rest it works fine, except background is dark gray."Missing vcl resource. This indicates that files vital to localization are missing. " "You might have a corrupt installation."
Return from my Avatar® training. Wow.
Thirteen days. The day starts with Tai chi. After breakfast a inspiring talk from Harry and then on to your morning program: simple but awesome and mindbogglingly clever experiential exercises that eventually trick your mind into giving up information that is transparent to you. Such information may be quite confronting--which is why the mind tries so hard to keep it secret--but very helpful once discovered.
The rest of the day is filled with intriguing exercises that let you expecience new aspects of shifting viewpoints, attention, desire/resistance, identity, etc. Some lead to profound insights or disclose repeating patterns in your life. Others help you lay out the blueprint of your mind and change it. Or shift your mode of conciousness, or make you experience unbelievable connection with and compassion for others.
A truely fantastic journey in conciousness, an empowering, humbling, mind broadening and joyful experience.
Realize that as an example language, German might be a
better choice than Dutch, so add German translations too.
Interestingly, the default buttons do not translate [to
German]. Probably that's a local build problem as default
buttons in old style dialogs are also in English. Leave
this (as well as the simple teaser bug :-) to the fresh
rebuild after
my inspiring vacation.
Look into read-right translation of images. After a few
fruitless attempts to reuse that code to read layout xml
files, add another simplistic implementation to layout.
Ugh. To get things going, also add manual translations of
the zoom and wordcount dialogs and intergrate it all into
OOo.
It seems as if some macros are expanded twice, or that #undef does not work. Or quite possibly someone is trying to be smart, as we include layout-pre.hxx twice. We may have to remove the multiple inclusion shielding from that file and add another set of include headers layout-pre-header.hxx and layout-pre-source.hxx which simply include layout-pre.hxx again.( ( layout :: layout :: RadioButton * ) pCaller ) ; } long SvxZoomDialog :: UserHdl ( layout :: RadioButton * pBtn )
Jakub has made a two beautiful sets of buttons. Now add
them to the layout code.
Too bad that the OOo toolbar also has an help button image
with a life buoy.
aOptimalBtn.SetText( String( SVX_RESSTR ( RID_SVX_ZOOM_OPTIMAL ) ) ); aPageWidthBtn.SetText( String( SVX_RESSTR ( RID_SVX_ZOOM_PAGEWIDTH ) ) ); aWholePageBtn.SetText( String( SVX_RESSTR ( RID_SVX_ZOOM_WHOLEPAGE ) ) );
Duh. To be fair, this code should not have been there. I
only debugged as far as initializing all buttons. After
removing these lines this is what native OOo zoom box looks
like. The texts that were translated are now missing.
These prove to be introduced by
the zoom-combobox.diff patch, which also removes
them from the zoom.src file.
Great. The rebuild fixed most localization issues, I now
have a fully localized Dutch and German (en-US, nl, de)
install. The cancel-button is translated (nl=Annuleren).
The zoom dialog however has still three untranslated
strings. The wordcount dialog is not translated at all.
Oddly, they are exactly the strings that I added in
my jcn.sdf. Now, do these still not translate, or did I
break it? Not good.
svx source\dialog\zoom.src 0 radiobutton RID_SVXDLG_ZOOM\
BTN_USER 42 en-US ~Variable
svx source\dialog\zoom.src 0 radiobutton RID_SVXDLG_ZOOM\
BTN_USER 42 nl ~Variabelle
svx source\dialog\zoom.src 0 fixedline RID_SVXDLG_ZOOM\
FL_ZOOM 92 en-US Zoom factor
svx source\dialog\zoom.src 0 fixedline RID_SVXDLG_ZOOM\
FL_ZOOM 92 nl Zoomfaktor
svx source\dialog\zoom.src 0 modaldialog RID_SVXDLG_ZOOM\
SID_ATTR_ZOOM 160 en-US Zoom
svx source\dialog\zoom.src 0 modaldialog RID_SVXDLG_ZOOM\
SID_ATTR_ZOOM 160 nl Schaal
Finally a partial localization success: some strings of zoom
are translated. It turns out that these translations happen
live in some other dialog's
definition: stbctrls.src. Not translated: title
(nl=Zet zoomfactor), fixed-line: (nl=Zoomfactor), radiobutton
(nl=Variabel), cancel-button (nl=Annuleren). Adding
hardcoded translations to zoom.src or merging my
own jcn.sdf hack does not
help.