From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Re: Emacs i18n Date: Sun, 10 Mar 2019 21:20:40 -0400 Message-ID: References: <87o97aq6gz.fsf@jidanni.org> <87tvgoud56.fsf@mail.linkov.net> <83o96wk2mi.fsf@gnu.org> <87k1hjfvjd.fsf@mail.linkov.net> <871s3p0zdz.fsf@mail.linkov.net> <83h8ckezyt.fsf@gnu.org> <83o96qegv1.fsf@gnu.org> <32b1ab1b-bef4-629a-8830-b1dcc6915087@cs.ucla.edu> <83a7iae9va.fsf@gnu.org> <05ed2dec-2a84-f7dc-1af5-c9d923992785@cs.ucla.edu> <87bm2p56gu.fsf@mail.linkov.net> <837edbdg33.fsf@gnu.org> <65e3fe78-3264-12ff-1edf-a05bfd86a9a9@cs.ucla.edu> <19b02ea5-c5e2-29a6-c037-f7481490f92a@cs.ucla.edu> Reply-To: rms@gnu.org Content-Type: text/plain; charset=Utf-8 Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="208010"; mail-complaints-to="usenet@blaine.gmane.org" Cc: eliz@gnu.org, juri@linkov.net, lokedhs@gmail.com, emacs-devel@gnu.org To: Paul Eggert Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Mar 11 02:22:07 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h39dm-000rxy-5V for ged-emacs-devel@m.gmane.org; Mon, 11 Mar 2019 02:22:06 +0100 Original-Received: from localhost ([127.0.0.1]:53517 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h39dl-00069v-3Z for ged-emacs-devel@m.gmane.org; Sun, 10 Mar 2019 21:22:05 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:55714) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h39cQ-00067N-NF for emacs-devel@gnu.org; Sun, 10 Mar 2019 21:20:43 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:56663) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h39cP-0002OO-Kt; Sun, 10 Mar 2019 21:20:41 -0400 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1h39cO-0004dr-2X; Sun, 10 Mar 2019 21:20:40 -0400 In-Reply-To: <19b02ea5-c5e2-29a6-c037-f7481490f92a@cs.ucla.edu> (message from Paul Eggert on Sat, 9 Mar 2019 22:07:06 -0800) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:234045 Archived-At: [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Thanks for explaining the -masc, -fem, -neut part. I'm afraid, though, that I > still don't fully understand the proposal. It sounds like it is a redesign of > what GNU gettext does, but I don't see any advantage over GNU gettext. The advantage -- which is a big one -- is that the way the translation is represented is much cleaner. Compare this (numeric-case NUMBER (russian-masc "%d байт скопирован, %s, %s") (russian-fem "%d байта скопировано, %s, %s") (russian-neut "%d байт скопировано, %s, %s")) (I have filled in strings for the real example you sent. Since I don't speak Russian, I was unable to write one myself, and it would have taken me hours to find one.) or this: "russian-masc:%d байт скопирован, %s, %s|\ russian-fem:%d байта скопировано, %s, %s|\ russian-neut:%d байт скопировано, %s, %s" with this: "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ... #: src/dd.c:822 #, c-format msgid "% byte copied, %s, %s" msgid_plural "% bytes copied, %s, %s" msgstr[0] "% байт скопирован, %s, %s" msgstr[1] "% байта скопировано, %s, %s" msgstr[2] "% байт скопировано, %s, %s" If the selector symbol can modify the string too, I can envision something like this: "russian-nom:%d байт%| скопирован%|, %s, %s" where the 'russian-nom' operator would replace the two %| sequences with the appropriate declensional suffixes for the nominative case. Building that sort of thing into gettext would be bad architecture. Gettext is too low level, and used in too many places. Making Emacs handle 'russian-nom' in a string it pulls out of gettext would be no problem at all. > This is a simple scheme that does not attempt to solve the problem of generating > idiomatic phrases for numbers (e.g., "twenty-four bytes" in English, I agree we don't need to do this. But, with the mechanism I've just proposed, it would be easy to do, so I suppose we would implement it. -- Dr Richard Stallman President, Free Software Foundation (https://gnu.org, https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org)