Hi
the tests scripts where not designed to work on windows, as gettext has
always worked fine out of the box so far with windows.
so it is perfectly normal the scipts give you errors.
does the translation work on the demoCW3 project ?
be sure the language you want to use in your project is installed in windows
(Control Panel > Regional & Language Options > Languages > Installed
services)
regards
Oliver
I'm still struggling with this. The manual says I can test whether gettext
is working by running scripts/testgettext.sh and scripts/testgettext.php.
Both of those fail, so perhaps I do not have a working gettext. However, I
note that the source code for those files says they only work under Linux;
should I expect those test programs to work in Cygwin on WinXP?
The first test fails with these messages:
/cygdrive/c/.../Temp/cc6XJfWK.o:sample.c:(.text+0x88): undefined reference
to `_libintl_bindtextdomain'
/cygdrive/c/.../Temp/cc6XJfWK.o:sample.c:(.text+0x94): undefined reference
to `_libintl_textdomain'
/cygdrive/c/.../Temp/cc6XJfWK.o:sample.c:(.text+0x9f): undefined reference
to `_libintl_gettext'
collect2: ld returned 1 exit status
scripts/testgettext.sh: line 68: /tmp/sample: No such file or directory
The PHP test fails with this message:
error: create /tmp/fr/LC_MESSAGES folder failed !
Does this mean that gettext is not working on my system, or are these
errors because the tests only work under Linux?
I get no error messages when I run cw3setup.php -- the last thing it says
is:
Launching po2mo script for projects: ACORN
Installation finished...
How can I tell if my problem is a broken gettext system vs. mistake(s) I'm
making in configuring the .po files?
FYI: At first, I was getting additional PHP errors indicating that
php_gettext was not installed; I un-commented the reference to that
extension in php.ini and copied php_gettext.dll to my php/ext folder, and
those messages disappeared.
Chris
Oliver Christen wrote:
well, by "translation", understand "string replacement"
practicaly, you "translate" raw strings into something more pleasant to
read for human.
so the translation system is useful even if you use only one language.
you can certainly override the template in your project and simply
directly replace the string inside but this will not work for the other
string recovered from php, ini and mapfile
regards
Oliver
Hi Oliver,
Thanks so much for your patient and clarifying response. Using what you
wrote and going through the Cartoweb documentation and the web again, I
now realize something which was not obvious to me before: that the whole
text translation scheme is a widely-used method, not limited just to
Cartoweb... Since I have never developed with these tools or with
internationalization before, I did not know about Gnu gettext and the
po/mo files; I thought it was something special to Cartoweb. Now I can
read the gettext documentation to understand much more.
One thing is still not quite clear to me: do I need to worry about
gettext, po/mo files, and all of that if I just want to change some
pieces of text *without translation* (the example I used last night is
changing the zoomin tool hover text from "Zoom In" to "Choose this tool
and click on the map to zoom in")? I think the answer is "yes" -- even
though I am not trying to internationalize or translate or localize the
text, I think I must create po files and add my new text as the
"translation" for the "zoomin" msgid. Is that correct?
One reason I am still confused on this point is that every reference to
text and messages in the Cartoweb documentation talks about
*translation*. There are lots of places that say, more or less, "If you
need to translate this, you will need gettext... etc". I am not
translating anything, so at first I thought none of those discussions
applied to my situation, but now I think that changing the default text
is basically the same process as translating. Is this correct?
I will continue my reading and then try to make sense of your examples
and suggestions. Thanks again for starting to point me in the right
direction. And thanks to you and Bruno for pointing out that gettext is
apparently needed but not working or not available on my live web
server... I will look into that problem after I get my development
system correctly changing the text I'm working on.
Cheers,
Chris
Oliver Christen wrote:
hi
po are only human readable container for the text<->translation strings
when running the cw3setup script, the .po get compilated by gettext
into binary .mo, these files are located in
cartoweb3/locale/*langcode*/LC_MESSAGES/*projectid.projectid.projectid*.mo
these are the files actualy used by gettext to do the string
replacement in real time.
the .po contains the string you want to translate.
For convenience, cartoweb include 2 scripts one can use to generate
some basic .mo for a given project: client2pot and server2pot.
These script simply look inside all the files of your project for every
strings included into I18n::gt(...) call (in php file) or into
{t}...{/t} tag (in templates files). additionaly, the server2pot also
get all the layer's labels from either the layers.ini file or the
mapfile.
dynamicaly generated strings will not get "recovered" by those scripts
unless someone provided some fake/hidden {t}..{/t} or I18n::gt(...),
for example for the tools's labels.
client.po, server.*projectid*.po, server.po contain the raw
(untranslated) list of strings for a given project.
msgid "IdRecentering"
msgstr ""
client.en.po, server.*projectid*.en.po, server.en.po are COPIES!!! of
the raw .po but this time they ALSO contain the translated strings for
the corresponding language.
msgid "IdRecentering"
msgstr "Identifiers recentering"
to quickly add translations to your projects, you can easily copy the
existing .po files provided in cartoweb by default and modify them. You
will have some extra translated/unwanted strings but nothing that cant
be easily modified/removed if needed.
copy ALL the .po files into your project's po folder.
look at an existing demo /po folder to see whats there.
if you want "clean" po files, you need to run the client2pot and
server2pot scripts to generate the RAW po files for your project and
then COPY these files and rename them with the extra 2 letters lang tag
(.po > .en.po) and EDIT them to add the translations for all the
strings you want.
I would suggest moving/deleting all .po existing in cartoweb3/po/
BEFORE doing that, as if some .po already exist, the script will try to
merge their content with the newly extracted content, which may be
problematic.
so once you have emptied the /po folder, go to /cartoweb3/scripts/ and
run the command "php client2pot.php *yourprojectid*" and "php
server2pot.php *yourprojectid*"
if you see ("zoomin", "query_by_bbox") it means the strings are NOT
translated.
check that gettext is installed and that it works correctly (see
documentation on how to test that
http://www.cartoweb.org/doc/cw3.5/xhtml/user.i18n.html#user.i18n.translations.debug)
restart Apache too.
gettext is a bit buggy and sometimes you need to restart Apache to see
the modification you did in the .po files even after you have run the
cw3setup script to generate the .mo
regards
Oliver
----- Original Message ----- From: "Chris Duncan, GISmatters"
<[EMAIL PROTECTED]>
To: "Cartoweb Users" <[email protected]>
Sent: Wednesday, October 15, 2008 11:30 PM
Subject: [Cartoweb-users] Confused about .po files
I am *not* trying to internationalize my application -- for our user
base and local application, there's no need to support any other
language than English.
I would like, however, to change some of the text that appears (for
example, in the tips that pop up when you hover over a tool like the
zoom-in tool).
I have tried to understand the system of .po files (defaults,
project-specific, alternate languages, sources vs. generated, etc),
but have become completely confused. I have not found enough info in
the documentation or wiki to clear up my confusion.
Could someone please provide a simple, clear, concise discussion of
the following (if you don't have lots of time to answer, then please
just skip to item (c) which is my most urgent question):
(a) When, and in what order, do .po files get used? For one thing, I'm
confused about what happens when I refresh the installation using
cw3setup vs. what happens at runtime when someone is using the site. I
see that there are *generated* .po files in the htdocs/po folder... I
assume *those* are the ones that actually provide text to the
application at runtime. But even there I find "default" and
project-specific folders and files. Where do "source" files live, and
what is the chain of processing that converts and/or merges them to
create the ones I see in htdocs/po?
(b) When do language-specific files get used? If there is both a
client.po and client.en.po file, which one gets used? What is the
interaction of the "generic" vs. the "language-specific" .po files?
(c) Last, but most important to me at this time: Suppose I wanted to
change the hover-text of the "zoom in" button to say "Choose this tool
and click on the map to zoom in" (we have some very un-savvy users!).
What specific steps do I follow to make that change in the recommended
way? My project currently has *no* po folder or files... do I copy
them from <cartowebhome>/po and then modify them? Do I need to run
server2pot.php and client2pot.php to initialize them in some way? I'm
totally lost on how to proceed...
One final detail that adds to my confusion: on my development machine
(WinXP, Apache server) I get message text like "Zoom in" or "Query by
rectangle" when I hover over the tools; when I upload my project to
the live web server (Windows Server, IIS) the tips are the message IDs
instead of the text ("zoomin", "query_by_bbox"). Why do they differ?
Thanks in advance to any of you who can help me understand this!
Cheers,
Chris
--
Chris Duncan, Ph.D.
President
GISmatters
[EMAIL PROTECTED]
http://www.gismatters.com/
1 Tuckerman Ln
Amherst, MA 01002
Tel: 413-549-2052
Fax: 508-637-2557
_______________________________________________
Cartoweb-users mailing list
[email protected]
http://lists.maptools.org/mailman/listinfo/cartoweb-users
--
Chris Duncan, Ph.D.
President
GISmatters
[EMAIL PROTECTED]
http://www.gismatters.com/
1 Tuckerman Ln
Amherst, MA 01002
Tel: 413-549-2052
Fax: 508-637-2557
--
Chris Duncan, Ph.D.
President
GISmatters
[EMAIL PROTECTED]
http://www.gismatters.com/
1 Tuckerman Ln
Amherst, MA 01002
Tel: 413-549-2052
Fax: 508-637-2557
_______________________________________________
Cartoweb-users mailing list
[email protected]
http://lists.maptools.org/mailman/listinfo/cartoweb-users
_______________________________________________
Cartoweb-users mailing list
[email protected]
http://lists.maptools.org/mailman/listinfo/cartoweb-users