From: Chusslove Illich <caslav.ilic-hi6Y0CQ0nG0@public.gmane.org>
To: bug-gettext-mXXj517/zsQ@public.gmane.org,
rms-mXXj517/zsQ@public.gmane.org
Cc: emacs-devel-mXXj517/zsQ@public.gmane.org,
Juri Linkov <juri-GgPz7P5p7nCsTnJN9+BGXg@public.gmane.org>
Subject: Re: Emacs i18n
Date: Fri, 22 Mar 2019 21:50:31 +0100 [thread overview]
Message-ID: <201903222150.32192.caslav.ilic@gmx.net> (raw)
In-Reply-To: <E1h6nE3-0000bt-SW-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 3010 bytes --]
>> [: Juri Linkov :]
>> Indeed, a complete implementation of all Russian morphological rules
>> takes ~1600 lines of dense Perl code:
>>
>> http://www.linkov.net/files/nlp/Lingua-RU-Inflect.pm
>>
>> I can't imagine how to include all these rules to gettext.
>
> [: Richard Stallman :]
> I agree with you about that. What I propose is something else.
>
> 1. I do not propose implementing them all. Only some -- whichever ones
> we think are worth while.
>
> 2. I do not propose putting any of this in gettext. What I propose
> would be Emacs code that operates on the strings that come from
> gettext.
I'd like to mention that a system of this kind, the Ki18n, is in
operation within the KDE ecosystem for more than a decade now. The
system is in fact invisible to programmers (for the most part), and it
is also invisible for translators, unless they know about it and want to
use it. At the last count, 10 language teams do make use of it.
Translators have at their disposal a generic scripting system, so that
any kind of algorithmic adaptation of translation is possible; and some
interesting uses have come up.
Programmer's perspective is given here:
http://api.kde.org/frameworks/ki18n/html/prg_guide.html . There is in
fact almost no mention of the system, which is as intended; only the
subsections "Dynamic Contexts" and "Placing and Installing Scripting
Modules" provide a clue that it exists.
Translator's perspective is given here:
http://techbase.kde.org/Localization/Concepts/Transcript . It includes
some real-life example at the end. The variety of basic functions
defined by translators can be seen in the system's source tarball
http://download.kde.org/stable/frameworks/5.56/ki18n-5.56.0.tar.xz in
po/*/scripts directories.
Regarding specifically plural handling, this is in normal use left to
Gettext standard functionality, since it was already there for a long
time. However, there are two cases where the system does get used for
plurals. One is the typical failure case where a programmer knows that
the substituted number will always be greater than and therefore thinks
a ngettext call is not needed; when this error is seen during a pre-
release message freeze, a scripted translation can be used to work
around until fix for next release. The other case is when a language
needs also plural handling for float-type arguments (e.g. gd in the
tarball above).
Each programming environment (programming language plus foundation
libraries) can implement its own version of a similar system, as
proposed here for Emacs. However, I think a unified Gettext solution
would be preferable. Based on the experience with Ki18n, some years ago
I made such a clean design for Gettext, but never got time to work on
it. It is described at http://nedohodnik.net/gettextbis/ . Section 6
describes the scripting system itself, with sections 2 and 3 detailing
the necessary support for it.
--
Chusslove Illich (Часлав Илић)
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
next prev parent reply other threads:[~2019-03-22 20:50 UTC|newest]
Thread overview: 235+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-20 11:59 Emacs i18n Bruno Haible
2019-03-20 16:36 ` Paul Eggert
2019-03-20 21:32 ` Juri Linkov
2019-03-21 2:14 ` Richard Stallman
[not found] ` <E1h6nE3-0000bt-SW-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
2019-03-21 21:45 ` Juri Linkov
2019-03-23 2:28 ` Richard Stallman
2019-03-23 7:55 ` Yuri Khan
[not found] ` <CAP_d_8WjQwAtcWCfkjXHtc-dqYyBfnaP0+9L8KK6eCp4r_ZsPQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-03-23 17:50 ` Ineiev
2019-03-24 1:43 ` Richard Stallman
[not found] ` <E1h7WOF-0006T8-Be-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
2019-03-23 21:48 ` Juri Linkov
2019-03-24 1:47 ` Richard Stallman
2019-03-22 20:50 ` Chusslove Illich [this message]
[not found] ` <87h8bx5ijn.fsf-i9wRM+HIrmlRTR8OWt4JRw@public.gmane.org>
2019-03-21 2:55 ` Bruno Haible
2019-03-21 2:14 ` Richard Stallman
2019-03-22 1:26 ` Bruno Haible
2019-03-23 2:29 ` Richard Stallman
-- strict thread matches above, loose matches on Subject: below --
2021-07-17 9:27 Narendra Joshi
2021-07-17 9:36 ` Thibaut Verron
2021-07-17 9:53 ` Eli Zaretskii
2021-07-17 13:32 ` mrf
2021-07-17 14:01 ` Eli Zaretskii
2021-07-17 20:00 ` Alexandre Garreau
2021-07-17 20:57 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-17 22:06 ` Jean-Christophe Helary
2021-07-17 22:55 ` Alexandre Garreau
2021-07-18 2:26 ` Jean-Christophe Helary
2021-07-19 1:53 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-18 6:47 ` Eli Zaretskii
2021-07-19 1:52 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-19 1:51 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-19 5:28 ` Thibaut Verron
2021-07-21 5:24 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 6:32 ` Alexandre Garreau
2021-07-21 9:45 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 10:16 ` Christopher Dimech
2021-07-21 12:08 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 12:36 ` Alexandre Garreau
2021-07-21 8:28 ` Christopher Dimech
2021-07-21 8:39 ` tomas
2021-07-21 9:18 ` Christopher Dimech
2021-07-21 10:52 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 11:53 ` Christopher Dimech
2021-07-21 12:56 ` Jean Louis
2021-07-21 13:23 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 13:39 ` Thibaut Verron
2021-07-21 14:05 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 14:47 ` Thibaut Verron
2021-07-21 17:55 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 18:15 ` Thibaut Verron
2021-07-21 18:26 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 18:27 ` Christopher Dimech
2021-07-21 18:42 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 19:06 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 19:40 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-07-21 20:49 ` Christopher Dimech
2021-07-21 21:44 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-07-21 21:58 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 22:55 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-07-22 7:05 ` Christopher Dimech
2021-07-22 8:11 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22 8:16 ` tomas
2021-07-22 9:24 ` Christopher Dimech
2021-07-22 5:49 ` Eli Zaretskii
2021-07-22 10:04 ` Christopher Dimech
2021-07-21 21:57 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22 7:09 ` tomas
2021-07-22 8:17 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22 9:18 ` lisa-asket
2021-07-21 14:22 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 17:02 ` Christopher Dimech
2021-07-21 17:49 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-19 11:43 ` Alexandre Garreau
2021-07-21 6:11 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 7:02 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 8:43 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 10:04 ` Christopher Dimech
2021-07-21 10:14 ` tomas
2021-07-21 10:34 ` Alexandre Garreau
2021-07-21 11:16 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 13:01 ` Jean Louis
2021-07-21 13:51 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22 8:15 ` Alexandre Garreau
2021-07-22 17:32 ` Yuri Khan
2021-07-22 18:02 ` Alexandre Garreau
2021-07-21 7:31 ` Alexandre Garreau
2021-07-21 7:47 ` Thibaut Verron
2021-07-21 9:59 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 10:28 ` Christopher Dimech
2021-07-21 11:49 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-21 12:44 ` Christopher Dimech
2021-07-21 13:20 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-23 6:03 ` Jean Louis
2021-07-23 9:22 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-27 20:52 ` Christopher Dimech
2021-07-17 22:03 ` Jean-Christophe Helary
2021-07-19 1:46 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-18 6:28 ` Eli Zaretskii
2021-07-17 20:06 ` Alexandre Garreau
2021-07-17 22:03 ` Jean-Christophe Helary
2021-07-18 6:30 ` Eli Zaretskii
2019-02-18 0:35 bug#34520: delete-matching-lines should report how many lines it deleted 積丹尼 Dan Jacobson
2019-02-27 21:36 ` Juri Linkov
2019-02-28 3:34 ` Eli Zaretskii
2019-02-28 21:33 ` Juri Linkov
2019-03-01 3:59 ` Richard Stallman
2019-03-02 20:55 ` Juri Linkov
2019-03-03 3:04 ` Richard Stallman
2019-03-03 15:31 ` Emacs i18n (was: bug#34520: delete-matching-lines should report how many lines it deleted) Eli Zaretskii
2019-03-03 20:57 ` Emacs i18n Juri Linkov
2019-03-04 1:46 ` Jean-Christophe Helary
2019-03-06 9:38 ` Elias Mårtenson
2019-03-06 11:23 ` Jean-Christophe Helary
2019-03-21 20:33 ` Clément Pit-Claudel
2019-03-21 20:50 ` Eli Zaretskii
2019-03-21 21:03 ` Clément Pit-Claudel
2019-03-21 21:21 ` Jean-Christophe Helary
2019-03-21 21:34 ` Clément Pit-Claudel
2019-03-21 21:56 ` Jean-Christophe Helary
2019-03-21 22:05 ` Clément Pit-Claudel
2019-03-21 23:46 ` Jean-Christophe Helary
2019-03-22 8:22 ` Eli Zaretskii
2019-03-22 16:10 ` Clément Pit-Claudel
2019-03-22 16:35 ` Eli Zaretskii
2019-03-22 17:16 ` Clément Pit-Claudel
2019-03-22 17:35 ` Eli Zaretskii
2019-03-22 23:17 ` Clément Pit-Claudel
2019-03-21 21:17 ` Jean-Christophe Helary
2019-03-21 21:59 ` Juri Linkov
2019-03-22 8:22 ` Eli Zaretskii
2019-03-23 21:50 ` Juri Linkov
2019-03-24 3:36 ` Eli Zaretskii
2019-03-24 21:55 ` Juri Linkov
2019-03-24 23:31 ` Jean-Christophe Helary
2019-03-25 21:32 ` Juri Linkov
2019-03-25 22:31 ` Paul Eggert
2019-03-26 16:11 ` Eli Zaretskii
2019-03-26 16:22 ` Stefan Monnier
2019-03-26 16:55 ` Eli Zaretskii
2019-03-26 22:35 ` Paul Eggert
2019-03-27 3:43 ` Eli Zaretskii
2019-03-28 14:56 ` Clément Pit-Claudel
2019-03-28 15:52 ` Eli Zaretskii
2019-03-27 2:34 ` Jean-Christophe Helary
2019-03-26 23:16 ` Juri Linkov
2019-03-27 1:35 ` Paul Eggert
2019-04-24 6:39 ` Jean-Christophe Helary
2019-04-24 20:18 ` Juri Linkov
2019-03-25 3:35 ` Eli Zaretskii
2019-03-25 9:04 ` Jean-Christophe Helary
2019-03-25 21:02 ` Juri Linkov
2019-03-26 3:27 ` Eli Zaretskii
2019-03-27 23:06 ` Richard Stallman
2019-03-25 10:52 ` Mattias Engdegård
2019-03-25 15:37 ` Eli Zaretskii
2019-03-25 21:11 ` Juri Linkov
2019-03-25 22:05 ` Mattias Engdegård
2019-03-27 21:22 ` Juri Linkov
2019-03-28 11:03 ` Mattias Engdegård
2019-03-04 3:27 ` Emacs i18n (was: bug#34520: delete-matching-lines should report how many lines it deleted) Richard Stallman
2019-03-04 16:36 ` Eli Zaretskii
2019-03-04 18:37 ` Paul Eggert
2019-03-04 19:07 ` Eli Zaretskii
2019-03-05 2:09 ` Paul Eggert
2019-03-05 21:58 ` Emacs i18n Juri Linkov
2019-03-06 2:16 ` Richard Stallman
2019-03-06 18:15 ` Eli Zaretskii
2019-03-06 19:47 ` Paul Eggert
2019-03-06 20:19 ` Eli Zaretskii
2019-03-07 1:52 ` Paul Eggert
2019-03-07 3:37 ` Eli Zaretskii
2019-03-08 4:07 ` Richard Stallman
2019-03-08 8:16 ` Eli Zaretskii
2019-03-08 4:07 ` Richard Stallman
2019-03-08 4:33 ` Elias Mårtenson
2019-03-08 8:22 ` Eli Zaretskii
2019-03-09 3:11 ` Richard Stallman
2019-03-09 7:54 ` Paul Eggert
2019-03-09 10:30 ` Eli Zaretskii
2019-03-10 3:05 ` Richard Stallman
2019-03-10 6:07 ` Paul Eggert
2019-03-11 1:20 ` Richard Stallman
2019-03-11 3:52 ` Paul Eggert
2019-03-12 3:31 ` Richard Stallman
2019-03-12 3:31 ` Richard Stallman
2019-03-10 8:45 ` Yuri Khan
2019-03-10 3:05 ` Richard Stallman
2019-03-10 6:14 ` Paul Eggert
2019-03-10 3:05 ` Richard Stallman
2019-03-07 3:42 ` Richard Stallman
2019-03-07 14:46 ` Eli Zaretskii
2019-03-07 17:19 ` Paul Eggert
2019-03-07 18:24 ` martin rudalics
2019-03-07 18:44 ` Paul Eggert
2019-03-07 20:22 ` Eli Zaretskii
2019-03-07 22:25 ` Paul Eggert
2019-03-08 7:29 ` Eli Zaretskii
2019-03-08 4:18 ` Richard Stallman
2019-03-08 4:11 ` Richard Stallman
2019-03-06 17:30 ` Eli Zaretskii
2019-03-06 18:09 ` Eli Zaretskii
2019-03-06 19:39 ` Paul Eggert
2019-03-06 19:49 ` Eli Zaretskii
2019-03-07 1:33 ` Paul Eggert
2019-03-07 3:30 ` Eli Zaretskii
2019-03-07 16:06 ` Paul Eggert
2019-03-07 4:35 ` Jean-Christophe Helary
2019-03-07 16:04 ` Paul Eggert
2019-03-08 4:09 ` Richard Stallman
2019-03-11 21:48 ` Juri Linkov
2019-03-11 22:51 ` Paul Eggert
2019-03-12 21:45 ` Juri Linkov
2019-03-17 21:23 ` Juri Linkov
2019-03-18 21:20 ` Juri Linkov
2019-03-18 21:55 ` Paul Eggert
2019-03-19 20:40 ` Juri Linkov
2019-03-11 23:59 ` Jean-Christophe Helary
2019-03-12 9:16 ` Michael Albinus
2019-03-06 19:47 ` Paul Eggert
2019-03-06 20:21 ` Eli Zaretskii
2019-03-07 1:43 ` Paul Eggert
2019-03-07 3:31 ` Eli Zaretskii
2019-03-07 3:44 ` Richard Stallman
2019-03-07 14:48 ` Eli Zaretskii
2019-03-07 22:29 ` Juri Linkov
2019-03-08 1:48 ` Jean-Christophe Helary
2019-03-08 8:08 ` Eli Zaretskii
2019-03-08 15:11 ` Jean-Christophe Helary
2019-03-08 20:11 ` Eli Zaretskii
2019-03-09 2:44 ` Jean-Christophe Helary
2019-03-09 6:40 ` Eli Zaretskii
2019-03-09 8:37 ` Michael Albinus
2019-03-09 10:45 ` Eli Zaretskii
2019-03-09 11:27 ` Michael Albinus
2019-03-09 17:23 ` Eli Zaretskii
2019-03-09 19:55 ` Paul Eggert
2019-03-09 20:07 ` Eli Zaretskii
2019-03-09 20:47 ` Paul Eggert
2019-03-09 20:04 ` Michael Albinus
2019-03-09 20:14 ` Eli Zaretskii
2019-03-09 19:22 ` Paul Eggert
2019-03-09 19:39 ` Eli Zaretskii
2019-03-09 20:48 ` Paul Eggert
2019-03-09 20:08 ` Michael Albinus
2019-03-10 3:09 ` Richard Stallman
2019-03-10 13:38 ` Eli Zaretskii
2019-03-08 7:37 ` Eli Zaretskii
2019-03-09 3:12 ` Richard Stallman
2019-03-08 4:11 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201903222150.32192.caslav.ilic@gmx.net \
--to=caslav.ilic-hi6y0cq0ng0@public.gmane.org \
--cc=bug-gettext-mXXj517/zsQ@public.gmane.org \
--cc=emacs-devel-mXXj517/zsQ@public.gmane.org \
--cc=juri-GgPz7P5p7nCsTnJN9+BGXg@public.gmane.org \
--cc=rms-mXXj517/zsQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.