all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Re: Emacs i18n
  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               ` Juri Linkov
  2019-03-04  1:46                 ` Jean-Christophe Helary
  2019-03-04  3:27               ` Emacs i18n (was: bug#34520: delete-matching-lines should report how many lines it deleted) Richard Stallman
  1 sibling, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-03 20:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rms, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 825 bytes --]

>> It seems pretty good.  When installing it, it should not use
>> `advice-add'.  Rather, `message' should call a list of functions.
>
> Unfortunately, past discussions didn't lead to any significant
> progress wrt this.

My intention was to fix the bug which manifests itself in
grammatically incorrect sentences displayed by ‘message’ like

  Deleted 1 matching lines
  1 matches found
  ...

After searching for available packages I found only this page
https://savannah.nongnu.org/projects/emacs-i18n
that shows no progress for many years.

So here is a patch that fixes the bug by translating currently
invalid messages into grammatically correct English.  It also
opens the gate towards translation of messages in many languages.
Currently this feature is activated by (require 'i18n-message):

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: i18n-message.patch --]
[-- Type: text/x-diff, Size: 10283 bytes --]

diff --git a/lisp/replace.el b/lisp/replace.el
index 59ad1a375b..b05bb51353 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -986,6 +986,12 @@ flush-lines
     (when interactive (message "Deleted %d matching lines" count))
     count))
 
+(eval-after-load "i18n-message"
+  '(i18n-add-translation "English"
+                         "Deleted %d matching lines"
+                         '("Deleted %d matching line"
+                           "Deleted %d matching lines")))
+
 (defun how-many (regexp &optional rstart rend interactive)
   "Print and return number of matches for REGEXP following point.
 When called from Lisp and INTERACTIVE is omitted or nil, just return
@@ -1032,11 +1038,15 @@ how-many
 	(if (= opoint (point))
 	    (forward-char 1)
 	  (setq count (1+ count))))
-      (when interactive (message "%d occurrence%s"
-				 count
-				 (if (= count 1) "" "s")))
+      (when interactive (message "%d occurrences" count))
       count)))
 
+(eval-after-load "i18n-message"
+  '(i18n-add-translation "English"
+                         "%d occurrences"
+                         '("%d occurrence"
+                           "%d occurrences")))
+
 \f
 (defvar occur-menu-map
   (let ((map (make-sparse-keymap)))
@@ -2730,10 +2740,7 @@ perform-replace
                                            (1+ num-replacements))))))
                              (when (and (eq def 'undo-all)
                                         (null (zerop num-replacements)))
-                               (message "Undid %d %s" num-replacements
-                                        (if (= num-replacements 1)
-                                            "replacement"
-                                          "replacements"))
+                               (message "Undid %d replacements" num-replacements)
                                (ding 'no-terminate)
                                (sit-for 1)))
 			   (setq replaced nil last-was-undo t last-was-act-and-show nil)))
@@ -2859,9 +2866,8 @@ perform-replace
                       last-was-act-and-show     nil))))))
       (replace-dehighlight))
     (or unread-command-events
-	(message "Replaced %d occurrence%s%s"
+	(message "Replaced %d occurrences%s"
 		 replace-count
-		 (if (= replace-count 1) "" "s")
 		 (if (> (+ skip-read-only-count
 			   skip-filtered-count
 			   skip-invisible-count)
@@ -2883,6 +2889,16 @@ perform-replace
 		   "")))
     (or (and keep-going stack) multi-buffer)))
 
+(eval-after-load "i18n-message"
+  '(i18n-add-translations
+    "English"
+    '(("Undid %d replacements"
+       ("Undid %d replacement"
+        "Undid %d replacements"))
+      ("Replaced %d occurrences%s"
+       ("Replaced %d occurrence%s"
+        "Replaced %d occurrences%s")))))
+
 (provide 'replace)
 
 ;;; replace.el ends here
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 3fd2a7e701..d2d748fca3 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -459,7 +459,7 @@ grep-mode-font-lock-keywords
      ;; remove match from grep-regexp-alist before fontifying
      ("^Grep[/a-zA-z]* started.*"
       (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t))
-     ("^Grep[/a-zA-z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?matches found\\)\\|\\(no matches found\\)\\).*"
+     ("^Grep[/a-zA-z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? found\\)\\|\\(no matches found\\)\\).*"
       (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t)
       (1 compilation-info-face nil t)
       (2 compilation-warning-face nil t))
@@ -561,6 +561,12 @@ grep-exit-message
 	     (cons msg code)))
     (cons msg code)))
 
+(eval-after-load "i18n-message"
+  '(i18n-add-translation "English"
+                         "finished with %d matches found\n"
+                         '("finished with %d match found\n"
+                           "finished with %d matches found\n")))
+
 (defun grep-filter ()
   "Handle match highlighting escape sequences inserted by the grep process.
 This function is called from `compilation-filter-hook'."
diff --git a/lisp/international/i18n-message.el b/lisp/international/i18n-message.el
new file mode 100644
index 0000000000..14755966e0
--- /dev/null
+++ b/lisp/international/i18n-message.el
@@ -0,0 +1,118 @@
+;;; i18n-message.el --- internationalization of messages  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Free Software Foundation, Inc.
+
+;; Author: Juri Linkov <juri@linkov.net>
+;; Maintainer: emacs-devel@gnu.org
+;; Keywords: i18n, multilingual
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defcustom i18n-fallbacks
+  '(("en" "English"))
+  "An alist mapping the current language to possible fallbacks.
+Each element should look like (\"LANG\" . FALLBACK-LIST), where
+FALLBACK-LIST is a list of languages to try to find a translation."
+  :type '(alist :key-type (string :tag "Current language")
+                :value-type (repeat :tag "A list of fallbacks" string))
+  :group 'i18n
+  :version "27.1")
+
+(defvar i18n-dictionaries (make-hash-table :test 'equal))
+
+(defun i18n-add-dictionary (lang)
+  (unless (gethash lang i18n-dictionaries)
+    (puthash lang (make-hash-table :test 'equal) i18n-dictionaries)))
+
+;;;###autoload
+(defun i18n-add-translation (lang from to)
+  (let ((dict (gethash lang i18n-dictionaries)))
+    (unless dict
+      (setq dict (i18n-add-dictionary lang)))
+    (puthash from to dict)))
+
+;;;###autoload
+(defun i18n-add-translations (lang translations)
+  (dolist (translation translations)
+    (i18n-add-translation lang (nth 0 translation) (nth 1 translation))))
+
+(defun i18n-get-plural (lang n)
+  ;; Source: (info "(gettext) Plural forms")
+  (pcase lang
+    ((or "Japanese" "Vietnamese" "Korean" "Thai")
+     0)
+    ((or "English" "German" "Dutch" "Swedish" "Danish" "Norwegian"
+         "Faroese" "Spanish" "Portuguese" "Italian" "Bulgarian" "Greek"
+         "Finnish" "Estonian" "Hebrew" "Bahasa Indonesian" "Esperanto"
+         "Hungarian" "Turkish")
+     (if (/= n 1) 1 0))
+    ((or "Brazilian Portuguese" "French")
+     (if (> n 1) 1 0))
+    ((or "Latvian")
+     (if (and (= (% n 10) 1) (/= (% n 100) 11)) 0 (if (/= n 0) 1 2)))
+    ((or "Gaeilge" "Irish")
+     (if (= n 1) 0 (if (= n 2) 1 2)))
+    ((or "Romanian")
+     (if (= n 1) 0 (if (or (= n 0) (and (> (% n 100) 0) (< (% n 100) 20))) 1 2)))
+    ((or "Lithuanian")
+     (if (and (= (% n 10) 1) (/= (% n 100) 11)) 0
+       (if (and (>= (% n 10) 2) (or (< (% n 100) 10) (>= (% n 100) 20))) 1 2)))
+    ((or "Russian" "Ukrainian" "Belarusian" "Serbian" "Croatian")
+     (if (and (= (% n 10) 1) (/= (% n 100) 11)) 0
+       (if (and (>= (% n 10) 2) (<= (% n 10) 4) (or (< (% n 100) 10) (>= (% n 100) 20))) 1 2)))
+    ((or "Czech" "Slovak")
+     (if (= n 1) 0 (if (and (>= n 2) (<= n 4)) 1 2)))
+    ((or "Polish")
+     (if (= n 1) 0
+       (if (and (>= (% n 10) 2) (<= (% n 10) 4) (or (< (% n 100) 10) (>= (% n 100) 20))) 1 2)))
+    ((or "Slovenian")
+     (if (= (% n 100) 1) 0 (if (= (% n 100) 2) 1 (if (or (= (% n 100) 3) (= (% n 100) 4)) 2 3))))
+    ((or "Arabic")
+     (if (= n 0) 0 (if (= n 1) 1 (if (= n 2) 2 (if (and (>= (% n 100) 3) (<= (% n 100) 10)) 3
+                                                 (if (>= (% n 100) 11) 4 5))))))))
+
+(defun i18n-get-translation (format-string &rest args)
+  (let* ((lang current-language-environment)
+	 (fallbacks (cdr (assoc lang i18n-fallbacks)))
+	 dict found)
+    (while (and (not found) lang)
+      (when (setq dict (gethash lang i18n-dictionaries))
+	(setq found
+              (pcase (gethash format-string dict)
+		((and (pred functionp) f) (apply f format-string args))
+		((and (pred stringp) s) s)
+		((and (pred consp) l)
+		 (let ((n (i18n-get-plural lang (car args))))
+		   (when n (nth n l)))))))
+      (unless found
+	(setq lang (pop fallbacks))))
+    (or found format-string)))
+
+(defun i18n-message-translate (&rest args)
+  (apply 'i18n-get-translation args))
+
+(defvar message-translate-function)
+
+(setq message-translate-function 'i18n-message-translate)
+
+(provide 'i18n-message)
+;;; i18n-message.el ends here
diff --git a/src/editfns.c b/src/editfns.c
index bffb5db43e..f517679576 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3050,6 +3050,14 @@ produced text.
 usage: (format STRING &rest OBJECTS)  */)
   (ptrdiff_t nargs, Lisp_Object *args)
 {
+  if (!NILP (Vmessage_translate_function) && nargs > 0)
+    {
+      Lisp_Object format = apply1 (Vmessage_translate_function,
+				   Flist (nargs, args));
+      if (STRINGP (format))
+	args[0] = format;
+    }
+
   return styled_format (nargs, args, false);
 }
 
@@ -3066,6 +3074,14 @@ and right quote replacement characters are specified by
 usage: (format-message STRING &rest OBJECTS)  */)
   (ptrdiff_t nargs, Lisp_Object *args)
 {
+  if (!NILP (Vmessage_translate_function) && nargs > 0)
+    {
+      Lisp_Object format = apply1 (Vmessage_translate_function,
+				   Flist (nargs, args));
+      if (STRINGP (format))
+	args[0] = format;
+    }
+
   return styled_format (nargs, args, true);
 }
 
@@ -4462,6 +4478,11 @@ of the buffer being accessed.  */);
 functions if all the text being accessed has this property.  */);
   Vbuffer_access_fontified_property = Qnil;
 
+  DEFVAR_LISP ("message-translate-function",
+	       Vmessage_translate_function,
+	       doc: /* Function that translates messages.  */);
+  Vmessage_translate_function = Qnil;
+
   DEFVAR_LISP ("system-name", Vsystem_name,
 	       doc: /* The host name of the machine Emacs is running on.  */);
   Vsystem_name = cached_system_name = Qnil;

^ permalink raw reply related	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-21 20:33                   ` Clément Pit-Claudel
  0 siblings, 2 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-04  1:46 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Eli Zaretskii, Richard Stallman, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 625 bytes --]



> On Mar 4, 2019, at 5:57, Juri Linkov <juri@linkov.net <mailto:juri@linkov.net>> wrote:
> 
> My intention was to fix the bug which manifests itself in
> grammatically incorrect sentences displayed by ‘message’ like
> 
>  Deleted 1 matching lines
>  1 matches found
>  ...

The best way to do that (I fixed the almost 100% of the package.el code with that) is to not use such syntax but rather things like:

Number of matches found: %d


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com <http://mac4translators.blogspot.com/> @brandelune



[-- Attachment #2: Type: text/html, Size: 3121 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-05  2:09                       ` Paul Eggert
@ 2019-03-05 21:58                         ` Juri Linkov
  2019-03-06  2:16                           ` Richard Stallman
                                             ` (2 more replies)
  0 siblings, 3 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-05 21:58 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Eli Zaretskii, rms, emacs-devel

>> The infrastructure used for that will most probably not work for Lisp,
>> let alone allow separate translations for separate packages to be
>> brought together and used in the same Emacs session.
>
> I don't see why it wouldn't work for Elisp. The gettext infrastructure
> allows multiple message catalogs in the same session. Obviously some
> hacking would be involved, since Elisp currently doesn't do any of this;
> but it could be built atop the existing infrastructure used by other GNU
> applications rather than being rewritten from scratch.

One of the main decisions that has to be made is whether to wrap all
user-facing translatable strings in all Lisp files using a macro/function
'gettext' (alias '_') explicitly like is implemented in XEmacs' I18N3
that would help to extract translations from the source code, or to use
a low-level implicit translation without changing the existing code like
is implemented for handling text-quoting-style in format strings.
The latter will even allow translation of strings that a package author
forgot to mark with '_'.

Depending on this decision a translation file format has to be selected,
be it flat Gettext PO format files or even some YAML-like hierarchical
Lisp structures with scopes.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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 17:30                           ` Eli Zaretskii
  2019-03-06 18:09                           ` Eli Zaretskii
  2 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-06  2:16 UTC (permalink / raw)
  To: Juri Linkov; +Cc: eliz, eggert, emacs-devel

[[[ 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. ]]]

  > One of the main decisions that has to be made is whether to wrap all
  > user-facing translatable strings in all Lisp files using a macro/function
  > 'gettext' (alias '_') explicitly like is implemented in XEmacs' I18N3
  > that would help to extract translations from the source code, or to use
  > a low-level implicit translation without changing the existing code like
  > is implemented for handling text-quoting-style in format strings.
  > The latter will even allow translation of strings that a package author
  > forgot to mark with '_'.

We could recognize all strings passed as certain arguments to certain
functions as translatable automatically, and have an explicit
way to mark other strings as translatable.  That could reduce
the amount of work for developers to mark them.

The translatability could be recorded as a text property in the
string.  Then, if a function such as 'message' gets a format string
that is not translatable, it could warn, or save up a record that
developers could optionally look at later.  This would help remind
developers to mark the strings that need it.



-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Elias Mårtenson @ 2019-03-06  9:38 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Eli Zaretskii, emacs-devel, Richard Stallman, Juri Linkov

[-- Attachment #1: Type: text/plain, Size: 384 bytes --]

On Mon, 4 Mar 2019 at 09:48, Jean-Christophe Helary <brandelune@gmail.com>
wrote:

>
> The best way to do that (I fixed the almost 100% of the package.el code
> with that) is to not use such syntax but rather things like:
>
> Number of matches found: %d
>

That works for English most of the time (although I would argue that it
isn't great). But it may be harder in other languages.

[-- Attachment #2: Type: text/html, Size: 979 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06  9:38                   ` Elias Mårtenson
@ 2019-03-06 11:23                     ` Jean-Christophe Helary
  0 siblings, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-06 11:23 UTC (permalink / raw)
  To: emacs-devel



> On Mar 6, 2019, at 18:38, Elias Mårtenson 
> 
> The best way to do that (I fixed the almost 100% of the package.el code with that) is to not use such syntax but rather things like:
> 
> Number of matches found: %d
> 
> That works for English most of the time (although I would argue that it isn't great).

I'm not sure why that is not "great" here. But I know from what I saw in packages.el that what is even less great it to get lost in lisp that attempts to mimic natural language inflections.

> But it may be harder in other languages.

It is unlikely that this structure is harder in non English languages than the original. Removing the need to express the difference in number actually removes an order of complexity.

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-05 21:58                         ` Emacs i18n Juri Linkov
  2019-03-06  2:16                           ` Richard Stallman
@ 2019-03-06 17:30                           ` Eli Zaretskii
  2019-03-06 18:09                           ` Eli Zaretskii
  2 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-06 17:30 UTC (permalink / raw)
  To: Juri Linkov; +Cc: eggert, rms, emacs-devel

> From: Juri Linkov <juri@linkov.net>
> Cc: Eli Zaretskii <eliz@gnu.org>,  rms@gnu.org,  emacs-devel@gnu.org
> Date: Tue, 05 Mar 2019 23:58:25 +0200
> 
> One of the main decisions that has to be made is whether to wrap all
> user-facing translatable strings in all Lisp files using a macro/function
> 'gettext' (alias '_') explicitly like is implemented in XEmacs' I18N3
> that would help to extract translations from the source code, or to use
> a low-level implicit translation without changing the existing code like
> is implemented for handling text-quoting-style in format strings.
> The latter will even allow translation of strings that a package author
> forgot to mark with '_'.

I'd encourage people who want or consider working on this to read past
discussions about related topics.  Some very important conclusions and
ideas came out of those discussions, and it would be a pity if we'd
need to reiterate all of what was already said and argued time and
again, instead of starting from where those past discussions ended.

Significant discussions of this happened in Dec 2001, in July 2007,
and lately in Apr 2017.  Some of those are quite long, but please do
read them, even if you were part of those discussions.  This current
discussion will be much more fruitful if we first recollect what we
already talked over.

> Depending on this decision a translation file format has to be selected,
> be it flat Gettext PO format files or even some YAML-like hierarchical
> Lisp structures with scopes.

The first alternative we should consider is to use the PO format,
because that's what translation teams out there are used to work with.
If it turns out that we cannot use the PO format for some good reasons
(which will have to be very good), we can consider other formats, but
translation teams will be in general very unhappy about that.

And I think these technicalities are not the first, let alone main,
decisions we must make.  They are important, but there are more
important and complex problems we need to address first.  I will talk
about this separately.

Thanks.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-05 21:58                         ` Emacs i18n Juri Linkov
  2019-03-06  2:16                           ` Richard Stallman
  2019-03-06 17:30                           ` Eli Zaretskii
@ 2019-03-06 18:09                           ` Eli Zaretskii
  2019-03-06 19:39                             ` Paul Eggert
                                               ` (2 more replies)
  2 siblings, 3 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-06 18:09 UTC (permalink / raw)
  To: Juri Linkov; +Cc: eggert, rms, emacs-devel

> From: Juri Linkov <juri@linkov.net>
> Cc: Eli Zaretskii <eliz@gnu.org>,  rms@gnu.org,  emacs-devel@gnu.org
> Date: Tue, 05 Mar 2019 23:58:25 +0200
> 
> One of the main decisions that has to be made is whether to wrap all
> user-facing translatable strings in all Lisp files using a macro/function
> 'gettext'

First, AFAIR the conclusion back when this was discussed was that we
might not need to mark the translatable strings, because almost all of
them should be translatable.  If anything, we might consider marking
strings that do NOT need to be translated, as they are a very small
minority.  Just look at the strings in a typical Emacs source file and
try to find strings that you wouldn't want translated.  Unlike some
other programs, Emacs almost never says something that is not meant to
be read and understood by the user.

Second, I don't understand why we are still talking about 'message'.
Most of the user interaction in Emacs that will benefit the most from
translation is not messages we show in the echo area: Emacs actually
doesn't chatter there too much.  Most of the stuff that IMO is much
more important to have translated are the doc strings.  It's no
coincidence that Emacs has around 5000 calls to 'message', but almost
50000 doc strings, 10 times more than echo-area messages.  So even if
we do decide to attack the 'message' part first, we should consider
the doc strings as well, so that whatever infrastructure we develop
for messages will work for doc strings as well.  And that adds more
issues that the basic design must solve or be capable of solving.

Then there are some seemingly minor technical issues, but I think
Emacs will force us to deal with them up front, because Emacs is so
much different from a typical localized text-mode program.  Some of
the issues that came up in the past:

 . Do we use a separate message catalog for each Lisp package, or a
   single catalog for all of Emacs?  Each alternative has its merits
   and demerits.  For example, if we go with separate catalogs, then
   how do we make the correct bindtextdomain call, given that packages
   call each other?  If we go for a single catalog, how do we support
   installing and loading a new package without exiting Emacs?

 . How to specify which target language to use?  The locale is not
   necessarily correct, e.g., when editing with Tramp.  Also, since
   translating all of Emacs is such a humongous job, it's quite
   possible that some languages will have little or no translations,
   and the respective users might want to use translations for a
   "fallback" language, which they prefer to English.

 . Many user-facing text messages include portions that we generate
   directly from symbol names, which are of course in English.  We
   should have some idea for how to deal with that.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06  2:16                           ` Richard Stallman
@ 2019-03-06 18:15                             ` Eli Zaretskii
  2019-03-06 19:47                               ` Paul Eggert
  2019-03-07  3:42                               ` Richard Stallman
  0 siblings, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-06 18:15 UTC (permalink / raw)
  To: rms; +Cc: eggert, emacs-devel, juri

> From: Richard Stallman <rms@gnu.org>
> Cc: eggert@cs.ucla.edu, eliz@gnu.org, emacs-devel@gnu.org
> Date: Tue, 05 Mar 2019 21:16:07 -0500
> 
> We could recognize all strings passed as certain arguments to certain
> functions as translatable automatically, and have an explicit
> way to mark other strings as translatable.  That could reduce
> the amount of work for developers to mark them.

You mean, the function, such as 'message', that receives the string
will translate it?  As opposed to the alternative of translating the
string _before_ it gets passed to the function?

If we do that, how do we deal with strings that are computed by
concatenation or formatting?  They get in one piece to functions like
'message', but the catalog will not hold that concatenated string, it
will have the parts separately.  How will the function be able to look
up the translation in such cases?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 18:09                           ` Eli Zaretskii
@ 2019-03-06 19:39                             ` Paul Eggert
  2019-03-06 19:49                               ` Eli Zaretskii
  2019-03-06 19:47                             ` Paul Eggert
  2019-03-07  3:44                             ` Richard Stallman
  2 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-06 19:39 UTC (permalink / raw)
  To: Eli Zaretskii, Juri Linkov; +Cc: rms, emacs-devel

On 3/6/19 10:09 AM, Eli Zaretskii wrote:
> we might consider marking
> strings that do NOT need to be translated, as they are a very small
> minority.  Just look at the strings in a typical Emacs source file and
> try to find strings that you wouldn't want translated.  Unlike some
> other programs, Emacs almost never says something that is not meant to
> be read and understood by the user.

My impression is just the opposite. Of course it depends on the module,
but I just now took a census of todo-mode.el (which I happened to be
editing anyway) and looked at the first 300 lines of source code (at
which point I got tired of counting). I counted 24 strings that should
not be translated, and 5 strings that should be. (I did not count doc
strings, which obviously should all be translated and shouldn't need to
be marked.)

Here are the strings needing translation:

"==--== DONE "
"DONE "
"Invalid value: must be distinct from `todo-item-mark'"
%s category %d: %s"
"Invalid value: must be a positive integer"

and here are the strings that don't need translation:

"todo/"
"\\.toda\\'"
"\\.todo\\'"
"--==-- "
"="
"["
"]"
"*"
"\\(?4:\\(?5:"
"\\)\\|"
"\\(?6:%s\\)"
"\\(?7:[0-9]+\\|\\*\\)"
"\\(?8:[0-9]+\\|\\*\\)"
"-?\\(?9:[0-9]+\\|\\*\\)"
""
"\\)"
"^\\("
"\\|"
"\\)?"
"^\\["
"\\("
"\\|"
"\\)"
""




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 18:09                           ` Eli Zaretskii
  2019-03-06 19:39                             ` Paul Eggert
@ 2019-03-06 19:47                             ` Paul Eggert
  2019-03-06 20:21                               ` Eli Zaretskii
  2019-03-07  3:44                             ` Richard Stallman
  2 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-06 19:47 UTC (permalink / raw)
  To: Eli Zaretskii, Juri Linkov; +Cc: rms, emacs-devel

On 3/6/19 10:09 AM, Eli Zaretskii wrote:
> even if
> we do decide to attack the 'message' part first, we should consider
> the doc strings as well

Absolutely. In some sense doc strings should be easier, since we
shouldn't need to make changes to existing code; all we need to do is
add some infrastructure that puts doc strings into a .po file and that
translates them when people ask for documentation.


>  . Do we use a separate message catalog for each Lisp package, or a
>    single catalog for all of Emacs?

We can start with a single catalog that handles core Emacs; we'll need
to do that anyway. We can deal with packages later.


>  . How to specify which target language to use?  The locale is not
>    necessarily correct, e.g., when editing with Tramp.  Also, since
>    translating all of Emacs is such a humongous job, it's quite
>    possible that some languages will have little or no translations,
>    and the respective users might want to use translations for a
>    "fallback" language, which they prefer to English.

It should be easy for Emacs users to specify a preferred locale for
messages, independently of what the system locale. Similarly, they can
specify a preferred fallback locale. All this is relatively easy to do
at the C level.

>  . Many user-facing text messages include portions that we generate
>    directly from symbol names, which are of course in English.  We
>    should have some idea for how to deal with that.

We start by leaving them as English, as that's easier. We can get
fancier later, if there's need.

The bottom line is that we don't need to have a complete solution in
order to start working on this.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 18:15                             ` Eli Zaretskii
@ 2019-03-06 19:47                               ` Paul Eggert
  2019-03-06 20:19                                 ` Eli Zaretskii
  2019-03-08  4:07                                 ` Richard Stallman
  2019-03-07  3:42                               ` Richard Stallman
  1 sibling, 2 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-06 19:47 UTC (permalink / raw)
  To: Eli Zaretskii, rms; +Cc: emacs-devel, juri

On 3/6/19 10:15 AM, Eli Zaretskii wrote:

> how do we deal with strings that are computed by concatenation or
> formatting?
>
The same way that other GNU packages deal with them: we redo calls, to
make the strings easier to translate. For example, instead of this code
(adapted from todo-mode.el):

  (message (concat "The highlighted item" (if (= count 1) " is " "s
precedes ")
                   "the timestamp %s.")
           timestamp)

we do something like this:

  (nmessage count
            "The highlighted item is not up to date."
            "The highlighted items are not up to date."
            timestamp)

where (nmessage N FMT1 FMT2 ...) is a new function that mimics GNU
ngettext by returning a translation of FMT1 (using N) if a translation
is available, and if no translation is available it falls back on using
FMT1 if N is 1 and FMT2 otherwise.

It's inevitable that we'd need to redo Lisp code this way, as
translators cannot be expected to be programming experts that understand
arbitrary Lisp code involving 'concat' and whatnot. This is what other
GNU packages have done, and Emacs can do something similar.

Of course it will be a big task to fully internationalize in this way,
and it's not something that can be done all at once. But it doesn't have
to be done all at once: we can create the machinery, do some proper i18n
of a few key Lisp modules, and let the other modules be fixed up later
when people find time.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 19:39                             ` Paul Eggert
@ 2019-03-06 19:49                               ` Eli Zaretskii
  2019-03-07  1:33                                 ` Paul Eggert
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-06 19:49 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, rms, juri

> Cc: rms@gnu.org, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 6 Mar 2019 11:39:50 -0800
> 
> On 3/6/19 10:09 AM, Eli Zaretskii wrote:
> > we might consider marking
> > strings that do NOT need to be translated, as they are a very small
> > minority.  Just look at the strings in a typical Emacs source file and
> > try to find strings that you wouldn't want translated.  Unlike some
> > other programs, Emacs almost never says something that is not meant to
> > be read and understood by the user.
> 
> My impression is just the opposite. Of course it depends on the module,
> but I just now took a census of todo-mode.el (which I happened to be
> editing anyway) and looked at the first 300 lines of source code (at
> which point I got tired of counting). I counted 24 strings that should
> not be translated, and 5 strings that should be.

We are miscommunicating: I meant strings passed to 'message' and its
ilk, not just any kind of strings.  It goes without saying that most
strings in our sources don't need to be translated, but that's not
what we are discussing.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 19:47                               ` Paul Eggert
@ 2019-03-06 20:19                                 ` Eli Zaretskii
  2019-03-07  1:52                                   ` Paul Eggert
  2019-03-08  4:07                                 ` Richard Stallman
  1 sibling, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-06 20:19 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, rms, juri

> Cc: juri@linkov.net, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 6 Mar 2019 11:47:23 -0800
> 
> On 3/6/19 10:15 AM, Eli Zaretskii wrote:
> 
> > how do we deal with strings that are computed by concatenation or
> > formatting?
> >
> The same way that other GNU packages deal with them: we redo calls, to
> make the strings easier to translate. For example, instead of this code
> (adapted from todo-mode.el):
> 
>   (message (concat "The highlighted item" (if (= count 1) " is " "s
> precedes ")
>                    "the timestamp %s.")
>            timestamp)
> 
> we do something like this:
> 
>   (nmessage count
>             "The highlighted item is not up to date."
>             "The highlighted items are not up to date."
>             timestamp)

That's the easy case.  This one is a bit tougher:

  (message "The program says: " (shell-command-to-string "foo"))

> It's inevitable that we'd need to redo Lisp code this way, as
> translators cannot be expected to be programming experts that understand
> arbitrary Lisp code involving 'concat' and whatnot. This is what other
> GNU packages have done, and Emacs can do something similar.

Except that Emacs is so much larger that doing this "like other
packages" might make the job infeasible.

Which is one reason why I think we should start from doc strings: they
are both easier and much more important.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 19:47                             ` Paul Eggert
@ 2019-03-06 20:21                               ` Eli Zaretskii
  2019-03-07  1:43                                 ` Paul Eggert
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-06 20:21 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, rms, juri

> Cc: rms@gnu.org, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 6 Mar 2019 11:47:18 -0800
> 
> >  . Do we use a separate message catalog for each Lisp package, or a
> >    single catalog for all of Emacs?
> 
> We can start with a single catalog that handles core Emacs; we'll need
> to do that anyway. We can deal with packages later.

"Core" here being the C sources?  That's about 4% of the doc strings,
a drop in the sea.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 19:49                               ` Eli Zaretskii
@ 2019-03-07  1:33                                 ` Paul Eggert
  2019-03-07  3:30                                   ` Eli Zaretskii
  2019-03-07  4:35                                   ` Jean-Christophe Helary
  0 siblings, 2 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-07  1:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, rms, juri

On 3/6/19 11:49 AM, Eli Zaretskii wrote:
> We are miscommunicating: I meant strings passed to 'message' and its
> ilk, not just any kind of strings.

In that case, the solution that Richard proposed should suffice for most
cases. That is, in most cases we shouldn't need to change the Elisp
source code; all we need is for xgettext (or its equivalent) to consider
the first argument of 'message' to be a translatable string. This is a
standard feature of xgettext (see its --keyword argument).




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 20:21                               ` Eli Zaretskii
@ 2019-03-07  1:43                                 ` Paul Eggert
  2019-03-07  3:31                                   ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-07  1:43 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, rms, juri

On 3/6/19 12:21 PM, Eli Zaretskii wrote:
>> We can start with a single catalog that handles core Emacs; we'll need
>> to do that anyway. We can deal with packages later.
> "Core" here being the C sources?  That's about 4% of the doc strings,
> a drop in the sea.

Sure, but it should be relatively easy to also grab the doc strings from
the Emacs core elisp code. GNU gettext already supports getting strings
from Elisp code (this was for XEmacs) and it should be a relatively
minor change to adapt it to also get doc strings.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 20:19                                 ` Eli Zaretskii
@ 2019-03-07  1:52                                   ` Paul Eggert
  2019-03-07  3:37                                     ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-07  1:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, rms, juri

On 3/6/19 12:19 PM, Eli Zaretskii wrote:

>
> That's the easy case. This one is a bit tougher: (message "The program
> says: " (shell-command-to-string "foo"))
>
Assuming you meant this:

  (message (concat "The program says: " (shell-command-to-string "foo")))

then it shouldn't be tough at all. The Elisp code should be rewritten
like this:

   (message "The program says: %s" (shell-command-to-string "foo"))

xgettext will automatically put "The program says: %s" into the pool of
translatable strings. The output of the "foo" command won't be
translated, nor should it be.

Anyway, the Elisp code with "concat" needs to be rewritten regardless of
whether we do i18n, as it can throw an exception if the shell command's
output contains "%".

All this is routine for program internationalization. Emacs is not
special here; we've often had to do this sort of thing for other GNU
packages.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-07  3:30 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, rms, juri

> Cc: juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 6 Mar 2019 17:33:26 -0800
> 
> On 3/6/19 11:49 AM, Eli Zaretskii wrote:
> > We are miscommunicating: I meant strings passed to 'message' and its
> > ilk, not just any kind of strings.
> 
> In that case, the solution that Richard proposed should suffice for most
> cases. That is, in most cases we shouldn't need to change the Elisp
> source code; all we need is for xgettext (or its equivalent) to consider
> the first argument of 'message' to be a translatable string. This is a
> standard feature of xgettext (see its --keyword argument).

This will solve the string extraction part.  But how will the actual
translation happen?  As I wrote elsewhere, I don't see how relying on
the function to perform the extraction will work with non-fixed
strings.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  1:43                                 ` Paul Eggert
@ 2019-03-07  3:31                                   ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-07  3:31 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, rms, juri

> Cc: juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 6 Mar 2019 17:43:43 -0800
> 
> On 3/6/19 12:21 PM, Eli Zaretskii wrote:
> >> We can start with a single catalog that handles core Emacs; we'll need
> >> to do that anyway. We can deal with packages later.
> > "Core" here being the C sources?  That's about 4% of the doc strings,
> > a drop in the sea.
> 
> Sure, but it should be relatively easy to also grab the doc strings from
> the Emacs core elisp code. GNU gettext already supports getting strings
> from Elisp code (this was for XEmacs) and it should be a relatively
> minor change to adapt it to also get doc strings.

That gets back again to the problems I mentioned.  E.g., what to do
with Org, which is in the core, but also distributed separately.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  1:52                                   ` Paul Eggert
@ 2019-03-07  3:37                                     ` Eli Zaretskii
  2019-03-08  4:07                                       ` Richard Stallman
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-07  3:37 UTC (permalink / raw)
  To: Paul Eggert; +Cc: juri, rms, emacs-devel

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 6 Mar 2019 17:52:05 -0800
> Cc: emacs-devel@gnu.org, rms@gnu.org, juri@linkov.net
> 
> then it shouldn't be tough at all. The Elisp code should be rewritten
> like this:
> 
>    (message "The program says: %s" (shell-command-to-string "foo"))
> 
> xgettext will automatically put "The program says: %s" into the pool of
> translatable strings. The output of the "foo" command won't be
> translated, nor should it be.
> 
> Anyway, the Elisp code with "concat" needs to be rewritten regardless of
> whether we do i18n, as it can throw an exception if the shell command's
> output contains "%".
> 
> All this is routine for program internationalization. Emacs is not
> special here; we've often had to do this sort of thing for other GNU
> packages.

Sure, except that Emacs is so much larger, and gives the programmer a
lot more freedom with treating code and data alike, than a typical C
program.  I just want people to realize how this job is more
complicated in Emacs than in any other program.  E.g., IIUC what you
say, we will need to rewrite also the likes of this:

  (let* ((field (get-char-property pos 'field))
	 (button (get-char-property pos 'button))
	 (doc (get-char-property pos 'widget-doc))
	 (text (cond (field "This is an editable text area.")
		     (button "This is an active area.")
		     (doc "This is documentation text.")
		     (t "This is unidentified text.")))
	 (widget (or field button doc)))
    (when widget
      (widget-browse widget))
    (message text)))

And this is just a random, and not the most complicated, example.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 18:15                             ` Eli Zaretskii
  2019-03-06 19:47                               ` Paul Eggert
@ 2019-03-07  3:42                               ` Richard Stallman
  2019-03-07 14:46                                 ` Eli Zaretskii
  1 sibling, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-07  3:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: juri, eggert, emacs-devel

[[[ 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. ]]]

  > You mean, the function, such as 'message', that receives the string
  > will translate it?  As opposed to the alternative of translating the
  > string _before_ it gets passed to the function?

Yes, of course.

  > If we do that, how do we deal with strings that are computed by
  > concatenation or formatting?

Feed them in through %s or something like that.

I'm proposing the convention that the first argument to 'message' gets
by default translated, and other arguments don't.  With this
convention, whichever result you want, it is clear how to get it.

We already do things basically this way, because if you want to
compute a string to be the message, you don't want % to be treated
specially in it.  So you use "%s" as the first argument and pas that
string as the second.

So I think this will require only occasional changes
and they won't be urgent.

  >   They get in one piece to functions like
  > 'message', but the catalog will not hold that concatenated string, it
  > will have the parts separately.

That would happen if the catalog is made ONLY by scanning the source.
That's why I suggested a feature to record whatever nontrivial format
strings are passed to 'message' and are not in the catalog.

Then you can add them to the catalog, or fix things some other way.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 18:09                           ` Eli Zaretskii
  2019-03-06 19:39                             ` Paul Eggert
  2019-03-06 19:47                             ` Paul Eggert
@ 2019-03-07  3:44                             ` Richard Stallman
  2019-03-07 14:48                               ` Eli Zaretskii
  2 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-07  3:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, emacs-devel, juri

[[[ 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. ]]]

  > Second, I don't understand why we are still talking about 'message'.
  > Most of the user interaction in Emacs that will benefit the most from
  > translation is not messages we show in the echo area: Emacs actually
  > doesn't chatter there too much.  Most of the stuff that IMO is much
  > more important to have translated are the doc strings.

I think it would be most natural to handle doc strings through
a special mechanism.  We have already had special mechanisms
for them -- I don't know whether we still do.  But it is easy
for the compiler to find them all and put them in a file
for translations.

   > . Do we use a separate message catalog for each Lisp package, or a
   >   single catalog for all of Emacs?  Each alternative has its merits
   >   and demerits.  For example, if we go with separate catalogs, then
   >   how do we make the correct bindtextdomain call, given that packages
   >   call each other?

I think they have to be separate, and we can use something like
lexical binding to specify the right one for each file.

This is worth a special mechamism for.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  1:33                                 ` Paul Eggert
  2019-03-07  3:30                                   ` Eli Zaretskii
@ 2019-03-07  4:35                                   ` Jean-Christophe Helary
  2019-03-07 16:04                                     ` Paul Eggert
                                                       ` (2 more replies)
  1 sibling, 3 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-07  4:35 UTC (permalink / raw)
  To: emacs-devel

> On Mar 7, 2019, at 10:33, Paul Eggert <eggert@cs.ucla.edu> wrote:
> 
> On 3/6/19 11:49 AM, Eli Zaretskii wrote:
>> We are miscommunicating: I meant strings passed to 'message' and its ilk, not just any kind of strings.
> 
> In that case, the solution that Richard proposed should suffice for most cases. That is, in most cases we shouldn't need to change the Elisp source code; all we need is for xgettext (or its equivalent) to consider the first argument of 'message' to be a translatable string. This is a standard feature of xgettext (see its --keyword argument).

Yes but... The first argument of message is often a lisp expression that generates natural language strings programatically. That part will have to be modified (although far from perfect, please check what I did on packages.el if what I wrote above is not clear).

ps: what is the proper way to reply to this list ? Keep everybody in Cc or remove the Cc and only keep the list address ?

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  3:42                               ` Richard Stallman
@ 2019-03-07 14:46                                 ` Eli Zaretskii
  2019-03-07 17:19                                   ` Paul Eggert
  2019-03-08  4:11                                   ` Richard Stallman
  0 siblings, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-07 14:46 UTC (permalink / raw)
  To: rms; +Cc: juri, eggert, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org, juri@linkov.net
> Date: Wed, 06 Mar 2019 22:42:06 -0500
> 
>   > If we do that, how do we deal with strings that are computed by
>   > concatenation or formatting?
> 
> Feed them in through %s or something like that.

But then the strings that are formatted via %s will not be translated,
they will remain in English.

> I'm proposing the convention that the first argument to 'message' gets
> by default translated, and other arguments don't.  With this
> convention, whichever result you want, it is clear how to get it.
> 
> We already do things basically this way, because if you want to
> compute a string to be the message, you don't want % to be treated
> specially in it.  So you use "%s" as the first argument and pas that
> string as the second.

For the point I'm trying to make, it is immaterial whether the first
argument is "%s" and the second argument is computed from several
sources, or the first argument is that computed string.  The problems
that follow are the same.

>   >   They get in one piece to functions like
>   > 'message', but the catalog will not hold that concatenated string, it
>   > will have the parts separately.
> 
> That would happen if the catalog is made ONLY by scanning the source.
> That's why I suggested a feature to record whatever nontrivial format
> strings are passed to 'message' and are not in the catalog.

Such a feature will only help when a given call to 'message' produce a
small number of fixed text strings.  If the text it produces includes
some non-deterministic ingredient, this method will not help.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  3:44                             ` Richard Stallman
@ 2019-03-07 14:48                               ` Eli Zaretskii
  2019-03-07 22:29                                 ` Juri Linkov
  2019-03-08  4:11                                 ` Richard Stallman
  0 siblings, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-07 14:48 UTC (permalink / raw)
  To: rms; +Cc: eggert, emacs-devel, juri

> From: Richard Stallman <rms@gnu.org>
> Cc: juri@linkov.net, eggert@cs.ucla.edu, emacs-devel@gnu.org
> Date: Wed, 06 Mar 2019 22:44:10 -0500
> 
> I think it would be most natural to handle doc strings through
> a special mechanism.

Up to a point, perhaps.  We still should try to use .po files for
them, if at all possible, and perhaps also the gettext code that
supports looking up strings in .gmo catalogs generated from .po.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  2 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-07 16:04 UTC (permalink / raw)
  To: Jean-Christophe Helary, emacs-devel

On 3/6/19 8:35 PM, Jean-Christophe Helary wrote:

> in most cases we shouldn't need to change the Elisp source code; all we need is for xgettext (or its equivalent) to consider the first argument of 'message' to be a translatable string. This is a standard feature of xgettext (see its --keyword argument).
> Yes but... The first argument of message is often a lisp expression

Of course; we are on the same page here. Most cases of 'message' should
be fine, but there will often be exceptions that we do need to rewrite.
These exceptions are not urgent: we can fix them as we find time.

> ps: what is the proper way to reply to this list ? Keep everybody in Cc or remove the Cc and only keep the list address ?

I typically just reply to whatever my email software defaults to.
Occasionally I'll remove a Cc if I think that particular person probably
won't care about my reply or I know the person is on a mailing list I'm
already replying to; but this is optional and takes time and I typically
don't bother.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  3:30                                   ` Eli Zaretskii
@ 2019-03-07 16:06                                     ` Paul Eggert
  0 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-07 16:06 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, rms, juri

On 3/6/19 7:30 PM, Eli Zaretskii wrote:
> I don't see how relying on
> the function to perform the extraction will work with non-fixed
> strings.

Yes, if a caller computes a string and then passes it to 'message',
xgettext's static analysis won't find the string. Although these calls
are in the minority, they do happen, and they'll need to be rewritten.
This is standard practice when any application is internationalized, and
I've already given an example of this.

Of course Emacs is a much bigger project than a small program like 'cat'
or 'uniq', and so Emacs will take much more work to internationalize.
But this is a problem of quantity, not of technology. That is,
translators will need to do more work than usual (as there are more
messages to translate) and developers will need to do some more work (as
there are more "tricky" uses of 'message' in Emacs than there were
"tricky" uses of fprintf in 'cat'.) However, the standard GNU
internationalization technology should work just fine with Emacs.

> E.g., what to do
> with Org, which is in the core, but also distributed separately.
A simple way to address that problem is to have Org use and ship the
same message catalog that Emacs does. Alternatively, Org could ship a
separate message catalog that contains only Org's messages and is
therefore a subset of the Emacs catalog. However, I doubt whether the
hassle of doing the latter would be worth the effort.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 14:46                                 ` Eli Zaretskii
@ 2019-03-07 17:19                                   ` Paul Eggert
  2019-03-07 18:24                                     ` martin rudalics
  2019-03-07 20:22                                     ` Eli Zaretskii
  2019-03-08  4:11                                   ` Richard Stallman
  1 sibling, 2 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-07 17:19 UTC (permalink / raw)
  To: Eli Zaretskii, rms; +Cc: juri, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3615 bytes --]

On 3/7/19 6:46 AM, Eli Zaretskii wrote:

>> From: Richard Stallman <rms@gnu.org> Cc: eggert@cs.ucla.edu,
>> emacs-devel@gnu.org, juri@linkov.net Date: Wed, 06 Mar 2019 22:42:06
>> -0500 > If we do that, how do we deal with strings that are computed
>> by > concatenation or formatting? Feed them in through %s or
>> something like that.
>>
> But then the strings that are formatted via %s will not be translated,
> they will remain in English.
>
Yes, but the scenario you describe should not occur in a properly
internationalized GNU application. We obviously can't assume that
Emacs's translation subroutine acts like Google Translate and can
translate any English-language string to the user's language. All we can
assume is that the translation subroutine converts one of a fixed set of
English-language strings to a string appropriate for the user's language.

This limitation will cause problems with Elisp code that does extensive
parsing or processing of English syntax (doctor.el, say), and that sort
of Elisp code will remain English-only (unless someone takes the time to
i18nize them specially). However most Elisp code does not parse English
or generate idiomatic English on the fly: instead, it uses a fixed,
stilted style that can routinely be converted to calls like (message
FORMAT ARG1 ARG2 ...) where FORMAT is translated and the ARG values are not.

To get a quick feel for this issue, I did a simple grep for the string
'(message (concat' in the Emacs source code. I found 41 instances of
this string. Of these, 8 were erroneous because the result of the
concatenation could contain an unwanted "%" or '`' that could cause
'message' to go awry, and I fixed them by installing the attached patch
(by the way, it's routine for i18n efforts to find trivial bugs like
this). The other 33 instances could easily be reworded to do proper i18n
when 'message' translates just its first argument and only simple,
xgettext-style static analysis is used to find the message strings. For
example, this code in calc-do-embedded:

  (message (concat
            "Embedded Calc mode enabled; "
            (if calc-embedded-quiet
                "Type `C-x * x'"
              "Give this command again")
            " to return to normal"))

can easily be rewritten to this:

   (if calc-embedded-quiet
       "Embedded Calc mode enabled; Type `C-x * x' to return to normal"
     "Embedded Calc mode enabled; Give this command again to return to
normal"))

which is easier for translators to grok, and is arguably clearer even if
we don't want to translate at all.Obviously my '(message (concat'
exercises only a small part of the problem, but the results of this
little sample are encouraging.

So this problem is solvable. Sure, it'll require substantial work, but
the work is routine and this sort of thing has been done for other packages.

The main argument against doing all this is that it's too much work
overall and nobody will have the time to do it all, so let's not even
bother. I have some sympathy for this argument, as i18n is clearly too
much work for any single contributor and the work will distract us from
other things. On the other hand, there's no pressing need to do all the
work quickly, it's a low-level task that can be farmed out to non-expert
volunteers that could conceivably grow the volunteer population, and if
we never even start the work then it will never get done and Emacs will
remain unfriendly to users who don't grok English.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Be-safer-about-in-message-formats.patch --]
[-- Type: text/x-patch; name="0001-Be-safer-about-in-message-formats.patch", Size: 7751 bytes --]

From f15d0d0247ffe7bc3bbd5fbe10271c93b2e2fb1c Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 7 Mar 2019 09:02:15 -0800
Subject: [PATCH] Be safer about "%" in message formats
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lisp/calc/calc-store.el (calc-copy-special-constant):
* lisp/net/rcirc.el (rcirc-handler-PART, rcirc-handler-KICK):
* lisp/org/org-agenda.el (org-agenda):
* lisp/org/org-clock.el (org-clock-out, org-clock-display):
* lisp/org/org.el (org-refile):
* lisp/progmodes/ada-xref.el (ada-goto-declaration):
* lisp/progmodes/idlwave.el (idlwave-scan-library-catalogs):
Don’t trust arbitrary strings to not contain "%" or "`" in
(message (concat STRING1 STRING2 ...)).
---
 lisp/calc/calc-store.el    |  4 ++--
 lisp/net/rcirc.el          |  4 ++--
 lisp/org/org-agenda.el     | 13 ++++++-------
 lisp/org/org-clock.el      | 22 ++++++++++++----------
 lisp/org/org.el            |  3 ++-
 lisp/progmodes/ada-xref.el |  3 +--
 lisp/progmodes/idlwave.el  |  7 +++----
 7 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index 589a776c41..3987c129c2 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -405,8 +405,8 @@ calc-copy-special-constant
                                     sconst))))
        (if var
            (let ((msg (calc-store-value var value "")))
-             (message (concat "Special constant \"%s\" copied to \"%s\"" msg)
-                      sconst (calc-var-name var)))))))))
+	     (message "Special constant \"%s\" copied to \"%s\"%s"
+		      sconst (calc-var-name var) msg))))))))
 
 (defun calc-copy-variable (&optional var1 var2)
   (interactive)
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index b1a6c1ce8d..9d53cd4436 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -2685,7 +2685,7 @@ rcirc-handler-PART-or-KICK
 (defun rcirc-handler-PART (process sender args _text)
   (let* ((channel (car args))
 	 (reason (cadr args))
-	 (message (concat channel " " reason)))
+	 (message "%s %s" channel reason))
     (rcirc-print process sender "PART" channel message)
     ;; print in private chat buffer if it exists
     (when (rcirc-get-buffer (rcirc-buffer-process) sender)
@@ -2697,7 +2697,7 @@ rcirc-handler-KICK
   (let* ((channel (car args))
 	 (nick (cadr args))
 	 (reason (nth 2 args))
-	 (message (concat nick " " channel " " reason)))
+	 (message "%s %s %s" nick channel reason))
     (rcirc-print process sender "KICK" channel message t)
     ;; print in private chat buffer if it exists
     (when (rcirc-get-buffer (rcirc-buffer-process) nick)
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index e416f5f062..23ee8d71e6 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -2882,13 +2882,12 @@ org-agenda
 	     (let* ((m (org-agenda-get-any-marker))
 		    (note (and m (org-entry-get m "THEFLAGGINGNOTE"))))
 	       (when note
-		 (message (concat
-			   "FLAGGING-NOTE ([?] for more info): "
-			   (org-add-props
-			       (replace-regexp-in-string
-				"\\\\n" "//"
-				(copy-sequence note))
-			       nil 'face 'org-warning)))))))
+		 (message "FLAGGING-NOTE ([?] for more info): %s"
+			  (org-add-props
+			   (replace-regexp-in-string
+			    "\\\\n" "//"
+			    (copy-sequence note))
+			   nil 'face 'org-warning))))))
 	 t t))
        ((equal org-keys "#") (call-interactively 'org-agenda-list-stuck-projects))
        ((equal org-keys "/") (call-interactively 'org-occur-in-agenda-files))
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 34b694d487..62c7cd92d1 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -1622,9 +1622,10 @@ org-clock-out
 						"\\>"))))
 		  (org-todo org-clock-out-switch-to-state))))))
 	  (force-mode-line-update)
-	  (message (concat "Clock stopped at %s after "
-			   (org-duration-from-minutes (+ (* 60 h) m)) "%s")
-		   te (if remove " => LINE REMOVED" ""))
+	  (message (if remove
+		       "Clock stopped at %s after %s => LINE REMOVED"
+		     "Clock stopped at %s after %s")
+		   te (org-duration-from-minutes (+ (* 60 h) m)))
 	  (run-hooks 'org-clock-out-hook)
 	  (unless (org-clocking-p)
 	    (setq org-clock-current-task nil)))))))
@@ -1925,13 +1926,14 @@ org-clock-display
 		    nil 'local))))
     (let* ((h (/ org-clock-file-total-minutes 60))
 	   (m (- org-clock-file-total-minutes (* 60 h))))
-      (message (concat (format "Total file time%s: "
-			       (cond (todayp " for today")
-				     (customp " (custom)")
-				     (t "")))
-		       (org-duration-from-minutes
-			org-clock-file-total-minutes)
-		       " (%d hours and %d minutes)")
+      (message (cond
+		(todayp
+		 "Total file time for today: %s (%d hours and %d minutes)")
+		(customp
+		 "Total file time (custom): %s (%d hours and %d minutes)")
+		(t
+		 "Total file time: %s (%d hours and %d minutes)"))
+	       (org-duration-from-minutes org-clock-file-total-minutes)
 	       h m))))
 
 (defvar-local org-clock-overlays nil)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 3a434d12df..e3c78ae90d 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -11878,7 +11878,8 @@ org-refile
 	    (when (featurep 'org-inlinetask)
 	      (org-inlinetask-remove-END-maybe))
 	    (setq org-markers-to-move nil)
-	    (message (concat actionmsg " to \"%s\" in file %s: done") (car it) file)))))))
+	    (message "%s to \"%s\" in file %s: done" actionmsg
+		     (car it) file)))))))
 
 (defun org-refile-goto-last-stored ()
   "Go to the location where the last refile was stored."
diff --git a/lisp/progmodes/ada-xref.el b/lisp/progmodes/ada-xref.el
index 28c52b0653..c9c923e1d6 100644
--- a/lisp/progmodes/ada-xref.el
+++ b/lisp/progmodes/ada-xref.el
@@ -1133,8 +1133,7 @@ ada-goto-declaration
 	(ada-find-in-ali identlist other-frame)
       ;; File not found: print explicit error message
       (ada-error-file-not-found
-       (message (concat (error-message-string err)
-			(nthcdr 1 err))))
+       (message "%s%s" (error-message-string err) (nthcdr 1 err)))
 
       (error
        (let ((ali-file (ada-get-ali-file-name (ada-file-of identlist))))
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 476d935e8a..25bc788ffc 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -5588,7 +5588,7 @@ idlwave-scan-library-catalogs
 	     (mapcar 'car idlwave-path-alist)))
 	  (old-libname "")
 	  dir-entry dir catalog all-routines)
-      (if message-base (message message-base))
+      (if message-base (message "%s" message-base))
       (while (setq dir (pop dirs))
 	(catch 'continue
 	  (when (file-readable-p
@@ -5603,8 +5603,7 @@ idlwave-scan-library-catalogs
 		     message-base
 		     (not (string= idlwave-library-catalog-libname
 				   old-libname)))
-		(message "%s" (concat message-base
-				      idlwave-library-catalog-libname))
+		(message "%s%s" message-base idlwave-library-catalog-libname)
 		(setq old-libname idlwave-library-catalog-libname))
 	      (when idlwave-library-catalog-routines
 		(setq all-routines
@@ -5618,7 +5617,7 @@ idlwave-scan-library-catalogs
 		       (setq dir-entry (assoc dir idlwave-path-alist)))
 	      (idlwave-path-alist-add-flag dir-entry 'lib)))))
       (unless no-load (setq idlwave-library-catalog-routines all-routines))
-      (if message-base (message (concat message-base "done"))))))
+      (if message-base (message "%sdone" message-base)))))
 
 ;;----- Communicating with the Shell -------------------
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: martin rudalics @ 2019-03-07 18:24 UTC (permalink / raw)
  To: Paul Eggert, Eli Zaretskii, rms; +Cc: emacs-devel, juri

These

-	 (message (concat channel " " reason)))
+	 (message "%s %s" channel reason))
      (rcirc-print process sender "PART" channel message)
      ;; print in private chat buffer if it exists
      (when (rcirc-get-buffer (rcirc-buffer-process) sender)
@@ -2697,7 +2697,7 @@ rcirc-handler-KICK
    (let* ((channel (car args))
  	 (nick (cadr args))
  	 (reason (nth 2 args))
-	 (message (concat nick " " channel " " reason)))
+	 (message "%s %s %s" nick channel reason))

get me here

In toplevel form:
../../lisp/net/rcirc.el:2685:1:Warning: Malformed `let*' binding: (message "%s
     %s" channel reason)
../../lisp/net/rcirc.el:2696:1:Warning: Malformed `let*' binding: (message "%s
     %s %s" nick channel reason)

martin



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 18:24                                     ` martin rudalics
@ 2019-03-07 18:44                                       ` Paul Eggert
  0 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-07 18:44 UTC (permalink / raw)
  To: martin rudalics, Eli Zaretskii, rms; +Cc: emacs-devel, juri

On 3/7/19 10:24 AM, martin rudalics wrote:
> ../../lisp/net/rcirc.el:2685:1:Warning: Malformed `let*' binding:
> (message "%s
>     %s" channel reason) 

Oops. Thanks for reporting that. I fixed it in master.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 17:19                                   ` Paul Eggert
  2019-03-07 18:24                                     ` martin rudalics
@ 2019-03-07 20:22                                     ` Eli Zaretskii
  2019-03-07 22:25                                       ` Paul Eggert
  2019-03-08  4:18                                       ` Richard Stallman
  1 sibling, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-07 20:22 UTC (permalink / raw)
  To: Paul Eggert; +Cc: juri, rms, emacs-devel

> Cc: emacs-devel@gnu.org, juri@linkov.net
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Thu, 7 Mar 2019 09:19:35 -0800
> 
> This limitation will cause problems with Elisp code that does extensive
> parsing or processing of English syntax (doctor.el, say), and that sort
> of Elisp code will remain English-only (unless someone takes the time to
> i18nize them specially). However most Elisp code does not parse English
> or generate idiomatic English on the fly: instead, it uses a fixed,
> stilted style that can routinely be converted to calls like (message
> FORMAT ARG1 ARG2 ...) where FORMAT is translated and the ARG values are not.
> 
> To get a quick feel for this issue, I did a simple grep for the string
> '(message (concat' in the Emacs source code. I found 41 instances of
> this string.

But 'message' is just a representative of a class of such functions.
There are others: 'signal', 'error', 'user-error', 'princ', 'format',
and probably some more I'm missing.  So the actual number of
occurrences is larger than the 40 you found.

I guess I'm saying that we should think some more whether we indeed
want to give up marking translatable strings and instead rely on some
functions always translating their argument strings.  Perhaps doing so
will impose restrictions on what a Lisp program can do, and we don't
want to live with such restrictions without some fire escape, in the
form of explicitly translated strings?

In general, I think we should not blindly accept any technique used
for localization, because Emacs is so much different from a typical
console program written in C.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-07 22:25 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: juri, rms, emacs-devel

On 3/7/19 12:22 PM, Eli Zaretskii wrote:
>
> 'message' is just a representative of a class of such functions.
> There are others: 'signal', 'error', 'user-error', 'princ', 'format',
> and probably some more I'm missing.  So the actual number of
> occurrences is larger than the 40 you found.

Yes, of course. And even for 'message', all I searched for was the
string '(message (concat', which is just a fraction of the calls to
'message' that will need to be reworked. That search was not an attempt
to count all the problems we'd run into; it merely was a sample of the
problems. If the sample is representative then each individual problem
should be relatively easy to solve.


> whether we indeed
> want to give up marking translatable strings and instead rely on some
> functions always translating their argument strings.

We could mark each translatable string by hand. But this would make for
more churn to the source code and would be more work. It's hard to see
why that would be a win, compared to the reasonably-common practice of
marking some well-known functions as doing translations automatically.


> Perhaps doing so
> will impose restrictions on what a Lisp program can do, and we don't
> want to live with such restrictions without some fire escape, in the
> form of explicitly translated strings?

One can easily work around any such restrictions by having a variant of
'message' that does not translate its format argument. We're already
doing this for translation of '`', by having two functions 'format' and
'format-message': the former does not translate '`', the latter does. A
similar approach can work for natural-language translation and 'message'.


> we should not blindly accept any technique used
> for localization, because Emacs is so much different from a typical
> console program written in C.

Of course we should not accept techniques blindly. We should use
techniques with our eyes open, based on experience. That being said,
this discussion suggests that Emacs is not really that much of a special
case aside from its size. If so, there is little need to reinvent the
i18n wheel just for Emacs, and there is a real advantage to reusing
existing GNU technology in this area rather than trying to reinvent it.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  7:37                                   ` Eli Zaretskii
  2019-03-08  4:11                                 ` Richard Stallman
  1 sibling, 2 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-07 22:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, rms, emacs-devel

>> I think it would be most natural to handle doc strings through
>> a special mechanism.
>
> Up to a point, perhaps.  We still should try to use .po files for
> them, if at all possible, and perhaps also the gettext code that
> supports looking up strings in .gmo catalogs generated from .po.

The PO format is best suited for translation of one-liners like
messages and menu items, but I doubt that the PO format would be
the most efficient implementation for multi-line doc strings since
gettext uses the whole text of the doc string as a key to translation.
Whereas more efficient would be to use a Lisp symbol (function or
variable name) as a translation key.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  7:37                                   ` Eli Zaretskii
  1 sibling, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-08  1:48 UTC (permalink / raw)
  To: emacs-devel



> On Mar 8, 2019, at 7:29, Juri Linkov <juri@linkov.net> wrote:
> 
> The PO format is best suited for translation of one-liners like
> messages and menu items, but I doubt that the PO format would be the most efficient implementation for multi-line doc strings since gettext uses the whole text of the doc string as a key to translation.
> Whereas more efficient would be to use a Lisp symbol (function or variable name) as a translation key.

po4a is a commonly used perl utility that creates po files from a number of documentation formats including texinfo. The msgid is indeed the paragraph itself but nobody sees any "efficiency" issue in the process.

Since the emacs code is not a documentation format, there would be a need to find a different way to extract the doc strings, but using each doc string paragraph as a msgid is not a problem in itself.

Let's not forget that most if not all issues regarding formats and processes on the l10n side have mostly been solved decades ago.

I think what really needs to be discussed is:

• which strings do we extract
• how to rewrite the mix of code and strings
• how to extract the resulting strings
• how to process the translations for display in emacs


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-06 19:47                               ` Paul Eggert
  2019-03-06 20:19                                 ` Eli Zaretskii
@ 2019-03-08  4:07                                 ` Richard Stallman
  2019-03-08  4:33                                   ` Elias Mårtenson
  1 sibling, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-08  4:07 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, juri, emacs-devel

[[[ 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. ]]]

  > we do something like this:

  >   (nmessage count
  >             "The highlighted item is not up to date."
  >             "The highlighted items are not up to date."
  >             timestamp)

It might be better to define a function like this

(defun numeric-select (count &rest messages)
  (or (nth count messages)
      (car (last messages))))

and then write

 (message (numeric-select count
 	       "The highlighted item is not up to date."
	        "The highlighted items are not up to date."))

Translation infrastructure might be able to recognize this construct
and mark the two strings as translatable if they are constants.

Even better, translation could allow replacing that list of messages
with a different list of messages, perhaps longer.   That would
make possible perfect support for a language where you need a different
text for 2 and for numbers larger than 2.

We could decide that the first element is for COUNT = 0,
and if that element is a number instead of a string, it means
to use the element for that number.

  (message (numeric-select count
  	         2
   	         "The highlighted item is not up to date."
	         "The highlighted items are not up to date."))

This, together with the feature of translating the list
as a different list, could be totally general.


-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07  3:37                                     ` Eli Zaretskii
@ 2019-03-08  4:07                                       ` Richard Stallman
  2019-03-08  8:16                                         ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-08  4:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: juri, eggert, emacs-devel

[[[ 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. ]]]

    > (let* ((field (get-char-property pos 'field))
    > 	 (button (get-char-property pos 'button))
    > 	 (doc (get-char-property pos 'widget-doc))
    > 	 (text (cond (field "This is an editable text area.")
    > 		     (button "This is an active area.")
    > 		     (doc "This is documentation text.")
    > 		     (t "This is unidentified text.")))
    > 	 (widget (or field button doc)))
    >   (when widget
    >     (widget-browse widget))
    >   (message text)))

We would need to make SOME sort of change in it, but change could be
very simple.  It could consist of writing a call to 'translate' around
each of those string constants.

Or we might adopt a reader syntax for translatable strings.
That might be convenient, since we want these to be found
by tools processing the code, not solely handled by
executing the code.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  2 siblings, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-08  4:09 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: emacs-devel

[[[ 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. ]]]

  > Yes but... The first argument of message is often a lisp
  > expression that generates natural language strings
  > programatically. That part will have to be modified (although far
  > from perfect, please check what I did on packages.el if what I
  > wrote above is not clear).

Those cases will need to be modified.
Such is life.  It may take time to get them all, but we will.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 14:48                               ` Eli Zaretskii
  2019-03-07 22:29                                 ` Juri Linkov
@ 2019-03-08  4:11                                 ` Richard Stallman
  1 sibling, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-08  4:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: juri, eggert, emacs-devel

[[[ 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. ]]]

  > > I think it would be most natural to handle doc strings through
  > > a special mechanism.

  > Up to a point, perhaps.  We still should try to use .po files for
  > them, if at all possible, and perhaps also the gettext code that
  > supports looking up strings in .gmo catalogs generated from .po.

I agree completely.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 14:46                                 ` Eli Zaretskii
  2019-03-07 17:19                                   ` Paul Eggert
@ 2019-03-08  4:11                                   ` Richard Stallman
  1 sibling, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-08  4:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, emacs-devel, juri

[[[ 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. ]]]

  > > That would happen if the catalog is made ONLY by scanning the source.
  > > That's why I suggested a feature to record whatever nontrivial format
  > > strings are passed to 'message' and are not in the catalog.

  > Such a feature will only help when a given call to 'message' produce a
  > small number of fixed text strings.  If the text it produces includes
  > some non-deterministic ingredient, this method will not help.

That is true.  But it is a comparatively small problem,
because those cases are a small minority.

The approach I have in mind is to make several mechanisms,
each designed to handle a large fraction of cases easily,
and leave the exceptions to be handled less easily.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 20:22                                     ` Eli Zaretskii
  2019-03-07 22:25                                       ` Paul Eggert
@ 2019-03-08  4:18                                       ` Richard Stallman
  1 sibling, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-08  4:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: juri, eggert, emacs-devel

[[[ 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. ]]]

  > But 'message' is just a representative of a class of such functions.
  > There are others: 'signal', 'error', 'user-error', 'princ', 'format',
  > and probably some more I'm missing.  So the actual number of
  > occurrences is larger than the 40 you found.

Some of them should be handled in the same way as 'message'.  But not
'format' -- it can be used for various things and some should not be
translated.

  > I guess I'm saying that we should think some more whether we indeed
  > want to give up marking translatable strings

Of course we need an explicit way to mark translatable strings -- but
we should also adopt short cuts (like recognizing first arg of
'message') so that a large fraction of these strings don't need to be
explicitly marked.

If we are going to handle translation, this is the obvious best way,
so let's not worry about the precise details.  It will get done.



-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 2 replies; 238+ messages in thread
From: Elias Mårtenson @ 2019-03-08  4:33 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Eli Zaretskii, Paul Eggert, emacs-devel, Juri Linkov

[-- Attachment #1: Type: text/plain, Size: 495 bytes --]

On Fri, 8 Mar 2019 at 12:08, Richard Stallman <rms@gnu.org> wrote:

Even better, translation could allow replacing that list of messages
> with a different list of messages, perhaps longer.   That would
> make possible perfect support for a language where you need a different
> text for 2 and for numbers larger than 2.


Russian, for example, uses three different grammatical cases, which are
dependent on the last digit of the number, the system needs to be more
complicated.

Regards,
Elias

[-- Attachment #2: Type: text/html, Size: 837 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 22:25                                       ` Paul Eggert
@ 2019-03-08  7:29                                         ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-08  7:29 UTC (permalink / raw)
  To: Paul Eggert; +Cc: juri, rms, emacs-devel

> Cc: rms@gnu.org, emacs-devel@gnu.org, juri@linkov.net
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Thu, 7 Mar 2019 14:25:30 -0800
> 
> > whether we indeed
> > want to give up marking translatable strings and instead rely on some
> > functions always translating their argument strings.
> 
> We could mark each translatable string by hand.

No, I didn't mean "each", I meant just some, hopefully a small
minority.  Because most of the use cases are probably easy enough to
change so that strings could be collected by a tool, and 'message' and
its ilk could then translate them automatically.  Having an explicit
translation function would then be that "fire escape" for when
converting code not to compute strings would be too painful.

> > Perhaps doing so
> > will impose restrictions on what a Lisp program can do, and we don't
> > want to live with such restrictions without some fire escape, in the
> > form of explicitly translated strings?
> 
> One can easily work around any such restrictions by having a variant of
> 'message' that does not translate its format argument.

We could, but I don't see how that would help.  If a string is not
found in the catalog(s), it will be output untranslated anyway, so why
do we need a separate function?

> this discussion suggests that Emacs is not really that much of a special
> case aside from its size.

I'm not sure I agree.  I think the fact that Emacs is written mostly
in Lisp and not in a procedural compiled language will make another
qualitative difference.

> there is a real advantage to reusing existing GNU technology in this
> area rather than trying to reinvent it.

Where it fits, sure.  Especially we should strive hard to use the PO
files for catalogs, because that affects the translation teams.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-07 22:29                                 ` Juri Linkov
  2019-03-08  1:48                                   ` Jean-Christophe Helary
@ 2019-03-08  7:37                                   ` Eli Zaretskii
  2019-03-09  3:12                                     ` Richard Stallman
  1 sibling, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-08  7:37 UTC (permalink / raw)
  To: Juri Linkov; +Cc: eggert, rms, emacs-devel

> From: Juri Linkov <juri@linkov.net>
> Cc: rms@gnu.org,  eggert@cs.ucla.edu,  emacs-devel@gnu.org
> Date: Fri, 08 Mar 2019 00:29:17 +0200
> 
> > We still should try to use .po files for them, if at all possible,
> > and perhaps also the gettext code that supports looking up strings
> > in .gmo catalogs generated from .po.
> 
> The PO format is best suited for translation of one-liners like
> messages and menu items, but I doubt that the PO format would be
> the most efficient implementation for multi-line doc strings since
> gettext uses the whole text of the doc string as a key to translation.

I'm not sure I understand why the length of the string is an important
factor here.  Can you explain?  If the problem is with the efficiency
of gettext implementation of indexing, then we could have our own
indexing method.

> Whereas more efficient would be to use a Lisp symbol (function or
> variable name) as a translation key.

A key other than the original string would mean abandoning the PO
format.  Any deviation from PO would mean major PITA for translation
teams, so we should make sure the reason for such a deviation is a
very good reason.  I'm not yet sure we have such a good reason.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08  1:48                                   ` Jean-Christophe Helary
@ 2019-03-08  8:08                                     ` Eli Zaretskii
  2019-03-08 15:11                                       ` Jean-Christophe Helary
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-08  8:08 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: emacs-devel

> From: Jean-Christophe Helary <brandelune@gmail.com>
> Date: Fri, 8 Mar 2019 10:48:46 +0900
> 
> I think what really needs to be discussed is:
> 
> • which strings do we extract
> • how to rewrite the mix of code and strings
> • how to extract the resulting strings
> • how to process the translations for display in emacs

Extraction is just a technicality, it can be done in either of several
possible ways.  We could use xgettext, or we could use a modification
of make-docfile (the latter is probably a must for collecting do
strings from C sources), or we could use po4a or something similar.
As long as the catalogs are PO files, we could even use a mix of
tools, if, for example, some of the tools is more convenient for Lisp,
but not for C.

And I don't understand what problems you see in the last item: what
should be done there other than display the translated string with
'message' or insert it into the *Help* buffer?

So I think you are bothered by stuff that is largely non-issues.  The
most important issues IMO are different: (a) what methodology of
extracting/marking translatable strings to choose so that this job
doesn't become infeasible; and (b) how to arrange the message catalogs
so that they will be easy to maintain and update, given the modular
nature of Emacs.  I think we should also take a better look at how the
built-in help facilities generate documentation and other displayable
strings from symbol names.  Macros such as define-minor-mode should
also be scrutinized to see if there are some special problems there.

Once this is done, the methodology decided, and the necessary tools
are available, the rest is just more or less mechanical work to
convert more and more parts of Emacs.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08  4:07                                       ` Richard Stallman
@ 2019-03-08  8:16                                         ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-08  8:16 UTC (permalink / raw)
  To: rms; +Cc: juri, eggert, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org, juri@linkov.net
> Date: Thu, 07 Mar 2019 23:07:20 -0500
> 
> Or we might adopt a reader syntax for translatable strings.
> That might be convenient, since we want these to be found
> by tools processing the code, not solely handled by
> executing the code.

I think we will need to come up with such a syntax anyway, because we
will want to leave the Lisp programmers the freedom of writing code
that computes displayable text out of thin air.

It doesn't have to be reader syntax, btw: it could be a special
function.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08  4:33                                   ` Elias Mårtenson
@ 2019-03-08  8:22                                     ` Eli Zaretskii
  2019-03-09  3:11                                     ` Richard Stallman
  1 sibling, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-08  8:22 UTC (permalink / raw)
  To: Elias Mårtenson; +Cc: eggert, emacs-devel, rms, juri

> From: Elias Mårtenson <lokedhs@gmail.com>
> Date: Fri, 8 Mar 2019 12:33:24 +0800
> Cc: Paul Eggert <eggert@cs.ucla.edu>, Eli Zaretskii <eliz@gnu.org>, Juri Linkov <juri@linkov.net>, 
> 	emacs-devel <emacs-devel@gnu.org>
> 
> Russian, for example, uses three different grammatical cases, which are dependent on the last digit of the
> number, the system needs to be more complicated.

It's more complicated than that (e.g., 21 and 11 produce different
forms in Russian), but gettext already has infrastructure for all
that, AFAIR.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08  8:08                                     ` Eli Zaretskii
@ 2019-03-08 15:11                                       ` Jean-Christophe Helary
  2019-03-08 20:11                                         ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-08 15:11 UTC (permalink / raw)
  To: emacs-devel



> On Mar 8, 2019, at 17:08, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Jean-Christophe Helary <brandelune@gmail.com>
>> Date: Fri, 8 Mar 2019 10:48:46 +0900
>> 
>> I think what really needs to be discussed is:
>> 
>> • which strings do we extract
>> • how to rewrite the mix of code and strings
>> • how to extract the resulting strings
>> • how to process the translations for display in emacs
> 
> Extraction is just a technicality, it can be done in either of several
> possible ways.

Sure. I just meant that l10n issues (is PO "efficiency", etc.) are already solved, but i18n in general has to be implemented from scratch.

> And I don't understand what problems you see in the last item: what
> should be done there other than display the translated string with
> 'message' or insert it into the *Help* buffer?

As I wrote above: we have to implement everything from scratch.

> So I think you are bothered by stuff that is largely non-issues.  The
> most important issues IMO are different: (a) what methodology of
> extracting/marking translatable strings to choose so that this job
> doesn't become infeasible;

That's my 3 first points elegantly combined into one :)

> and (b) how to arrange the message catalogs
> so that they will be easy to maintain and update, given the modular
> nature of Emacs.

I'm not sure what you mean in "how to arrange ..." Do you mean: how to provide the l10n packages to translator communities ?

>  I think we should also take a better look at how the
> built-in help facilities generate documentation and other displayable
> strings from symbol names.  Macros such as define-minor-mode should
> also be scrutinized to see if there are some special problems there.
> 
> Once this is done, the methodology decided, and the necessary tools
> are available, the rest is just more or less mechanical work to
> convert more and more parts of Emacs.

Can't we start with a survey of the strings we want extracted in a given number of emacs core packages ?


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08 15:11                                       ` Jean-Christophe Helary
@ 2019-03-08 20:11                                         ` Eli Zaretskii
  2019-03-09  2:44                                           ` Jean-Christophe Helary
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-08 20:11 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: emacs-devel

> From: Jean-Christophe Helary <brandelune@gmail.com>
> Date: Sat, 9 Mar 2019 00:11:24 +0900
> 
> > Extraction is just a technicality, it can be done in either of several
> > possible ways.
> 
> Sure. I just meant that l10n issues (is PO "efficiency", etc.) are already solved, but i18n in general has to be implemented from scratch.

No sure I understand: what part(s) we would need to implement from
scratch?  We already have the capability of inserting arbitrary
non-ASCII text into any buffer and displaying such text as echo area
messages.

> > and (b) how to arrange the message catalogs
> > so that they will be easy to maintain and update, given the modular
> > nature of Emacs.
> 
> I'm not sure what you mean in "how to arrange ..." Do you mean: how to provide the l10n packages to translator communities ?

No, I mean how many catalogs should we have and what should be their
granularity.  Also, how to merge several catalogs (the need for this
might disappear if, for example, we decide that each .el file will
have its own catalog), and how to load catalogs on demand when the
corresponding code is loaded/executed.

> Can't we start with a survey of the strings we want extracted in a given number of emacs core packages ?

How would such a survey help us?  We generally want all of the strings
that are displayed to the user translated.  We don't need any survey
for that decision.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08 20:11                                         ` Eli Zaretskii
@ 2019-03-09  2:44                                           ` Jean-Christophe Helary
  2019-03-09  6:40                                             ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-09  2:44 UTC (permalink / raw)
  To: emacs-devel



> On Mar 9, 2019, at 5:11, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Jean-Christophe Helary <brandelune@gmail.com>
>> Date: Sat, 9 Mar 2019 00:11:24 +0900
>> 
>>> Extraction is just a technicality, it can be done in either of several possible ways.
>> 
>> Sure. I just meant that l10n issues (is PO "efficiency", etc.) are already solved, but i18n in general has to be implemented from scratch.
> 
> No sure I understand: what part(s) we would need to implement from scratch?  We already have the capability of inserting arbitrary non-ASCII text into any buffer and displaying such text as echo area messages.

What I mean by "from scratch" is that we have the possibility to extract text and insert text, but i18n is inexistant in emacs. So we have to build an i18n system that works for emacs and that does not exist yet, at all.

Also, the "how to load catalogs on demand" point that you mention below is part of i18n and as you seem to say has to be developed from scratch.

>>> and (b) how to arrange the message catalogs so that they will be easy to maintain and update, given the modular nature of Emacs.
>> 
>> I'm not sure what you mean in "how to arrange ..." Do you mean: how to provide the l10n packages to translator communities ?
> 
> No, I mean how many catalogs should we have and what should be their granularity.

Isn't that related to the below item ?

> Also, how to merge several catalogs (the need for this might disappear if, for example, we decide that each .el file will have its own catalog),

Won't this depend on the extracting tool's options ? And wouldn't that be more practical in the first place to not merge anything but have one catalog per .el file ? (practical in terms of translation/testing/management, as far as I can tell from experience, etc.)

> and how to load catalogs on demand when the corresponding code is loaded/executed.

I guess you mean the technicalities involved in the obvious (?) "we check the user preferred locale and display the catalog corresponding to that locale" ?

>> Can't we start with a survey of the strings we want extracted in a given number of emacs core packages ?
> 
> How would such a survey help us?  We generally want all of the strings that are displayed to the user translated.  We don't need any survey for that decision.

Of course, but a survey (sorry, I don't have a better word) of a few packages can help us see the workload, build prototypes, test them, establish best practices for developers, etc.


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-09  3:11 UTC (permalink / raw)
  To: Elias MÃ¥rtenson; +Cc: eliz, eggert, emacs-devel, juri

[[[ 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. ]]]

  > Russian, for example, uses three different grammatical cases, which are
  > dependent on the last digit of the number, the system needs to be more
  > complicated.

Here's an idea for a scheme general enough to handle Russian as well.
I propose something like a case or select construct.
First, the elegant Lispy way to represent it:

  (numeric-case NUMBER
      (1 "Just one frob")
      (2 "Two frobs")
      (russian-masc "%d-m frobs")
      (russian-fem "%d-f frobs")
      (russian-neut "%d-n frobs")
      (t "%d frobs"))

Translation would have to the entire numeric-case construct
with another (translated) numeric-case construct.  Thus, the source
code would contain one suitable for English:

  (numeric-case NUMBER
      (1 "one frob")
      (t "%d frobs"))

and for Russian we would translate it into this one

  (numeric-case NUMBER
      (russian-masc "%d-m frobs")
      (russian-fem "%d-f frobs")
      (russian-neut "%d-n frobs"))

I think this framework could be extended to handle
whatever other weird grammatical rules we might encounter in other languages
in the future.

While doing it with Lisp syntax is elegant, it would require
generalization of the infrastructure for recording translations to
handle more than strings.   That would be a pain.

Here's a way to represent the conditional construct as a kind of
string.  That way, translation would only need to translate strings
into strings.

We could use | in the string to separate alternatives, and : to end
a condition.  It would look like this:

  (numeric-case NUMBER
    "1:one frob|\
     t:%d frobs")

For Russian, we would translate the source string

  1:one frob|t:%d frobs

into

  russian-masc:%d-m frobs|russian-fem:%d-f frobs|russian-neut:%d-n frobs

The subsequences : and | would be handled by the function numeric-case.
They would not affect the meaning of the string data type as such.
numeric-case would ignore whitespace after |.

With this string convention, we only need to translate strings.

To include a | in an alternative, you could write a double |.
We do not need a way to quote a colon.

Perhaps one could develop a smarter 'russian' alternative
that knows how to change the last letter automatically and handles
all three alternatives.


Maybe we need to define a format-spec for devouring and ignoring one argument.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-08  7:37                                   ` Eli Zaretskii
@ 2019-03-09  3:12                                     ` Richard Stallman
  0 siblings, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-09  3:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, emacs-devel, juri

[[[ 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. ]]]

We can handle translating doc strings just like the other
translations.  Or we could have a special system for doc strings -- if
that proves more convenient.  Since doc strings are special in so many
ways, a special system might prove more convenient.  Or it might not.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  2:44                                           ` Jean-Christophe Helary
@ 2019-03-09  6:40                                             ` Eli Zaretskii
  2019-03-09  8:37                                               ` Michael Albinus
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09  6:40 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: emacs-devel

> From: Jean-Christophe Helary <brandelune@gmail.com>
> Date: Sat, 9 Mar 2019 11:44:09 +0900
> 
> >> Sure. I just meant that l10n issues (is PO "efficiency", etc.) are already solved, but i18n in general has to be implemented from scratch.
> > 
> > No sure I understand: what part(s) we would need to implement from scratch?  We already have the capability of inserting arbitrary non-ASCII text into any buffer and displaying such text as echo area messages.
> 
> What I mean by "from scratch" is that we have the possibility to extract text and insert text, but i18n is inexistant in emacs. So we have to build an i18n system that works for emacs and that does not exist yet, at all.

I don't see how we can start implementing before deciding what and how
to implement.  This discussion hopefully will eventually lead to such
decisions.

> Also, the "how to load catalogs on demand" point that you mention below is part of i18n and as you seem to say has to be developed from scratch.

If we decide that the gettext way is not entirely appropriate, yes.
But we didn't make that decision yet.

> > Also, how to merge several catalogs (the need for this might disappear if, for example, we decide that each .el file will have its own catalog),
> 
> Won't this depend on the extracting tool's options ?

Not directly, no.  It's actually the other way around: we should first
decide how to arrange the catalogs, and only after that see what
tools/options to use for that.

> And wouldn't that be more practical in the first place to not merge anything but have one catalog per .el file ? (practical in terms of translation/testing/management, as far as I can tell from experience, etc.)

If you are following the discussion, you know that not everyone agrees
with that.  There are advantages in having just one catalog or a small
number of large ones.

> > and how to load catalogs on demand when the corresponding code is loaded/executed.
> 
> I guess you mean the technicalities involved in the obvious (?) "we check the user preferred locale and display the catalog corresponding to that locale" ?

I said "load", not "display".  If you have one catalog per .el file,
when do you load it into memory and when, if ever, do you unload it?
Loading everything at the start would be un-economical, to say the
least.

> >> Can't we start with a survey of the strings we want extracted in a given number of emacs core packages ?
> > 
> > How would such a survey help us?  We generally want all of the strings that are displayed to the user translated.  We don't need any survey for that decision.
> 
> Of course, but a survey (sorry, I don't have a better word) of a few packages can help us see the workload, build prototypes, test them, establish best practices for developers, etc.

I don't think we have reached the point where building prototypes is
useful, since we don't yet have the basic design decisions for
prototyping.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  3:11                                     ` Richard Stallman
@ 2019-03-09  7:54                                       ` Paul Eggert
  2019-03-09 10:30                                         ` Eli Zaretskii
                                                           ` (3 more replies)
  0 siblings, 4 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-09  7:54 UTC (permalink / raw)
  To: rms; +Cc: eliz, emacs-devel, Elias Mårtenson, juri

Richard Stallman wrote:
> Here's an idea for a scheme general enough to handle Russian as well.

That idea's use of "-masc", "-fem", and "-neut" suggests that you misunderstood 
the problem with translating format strings like "%d items" into Russian.

Russian has three plural forms useful for translating a string that formats an 
integer N. One form is for when (N%10 == 1 && N%100/10 != 1), one is for when (2 
<= N%10 && N%10 <= 4 && N%100/10 == 1), and one is for everything else. So the 
form depends on N, not on whether the translation of the word "items" is 
masculine or feminine or whatever. Other languages have other rules, with 
varying levels of complexity; for example, Arabic has six different plural forms.

GNU gettext deals with this at the translation level, so that ordinary programs 
can just use a function like ngettext to translate an English-language format 
with two plural forms. Emacs Lisp should do something similar: we shouldn't try 
to reinvent this wheel.

Here's an example, taken from GNU dd. The C source code contains the two English 
forms and looks something like this:

          fprintf (stderr,
                   ngettext ("%"PRIuMAX" byte copied, %s, %s",
                             "%"PRIuMAX" bytes copied, %s, %s",
                             w_bytes),
                   w_bytes, delta_s_buf, bytes_per_second);

And the ru.po file (which Russian translators edit) looks like 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 "%<PRIuMAX> byte copied, %s, %s"
msgid_plural "%<PRIuMAX> bytes copied, %s, %s"
msgstr[0] "%<PRIuMAX> байт скопирован, %s, %s"
msgstr[1] "%<PRIuMAX> байта скопировано, %s, %s"
msgstr[2] "%<PRIuMAX> байт скопировано, %s, %s"

Each of the three Russian plural forms is supported, and the right one is chosen 
by the translation system without the programmer having to know how Russian 
plural forms work. For more about this, please see the GNU gettext manual, such 
as this web page:

https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html


PS. Although the email from Elias said "From: =?UTF-8?Q?Elias_M=C3=A5rtenson?=" 
which displays correctly as "Elias Mårtenson", your reply said "To: Elias 
=?iso-8859-1?Q?M=C3=A5rtenson?=" which displays incorrectly as "Elias 
MÃ¥rtenson". It looks like there's a bug in your email client, or in your 
configuration of it, a bug that munges names of your email correspondents.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  6:40                                             ` Eli Zaretskii
@ 2019-03-09  8:37                                               ` Michael Albinus
  2019-03-09 10:45                                                 ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Michael Albinus @ 2019-03-09  8:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Jean-Christophe Helary, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

>> And wouldn't that be more practical in the first place to not merge
>> anything but have one catalog per .el file ? (practical in terms of
>> translation/testing/management, as far as I can tell from
>> experience, etc.)
>
> If you are following the discussion, you know that not everyone agrees
> with that.  There are advantages in having just one catalog or a small
> number of large ones.

One catalog for the whole Emacs is not appropriate for packages with a
life outside Emacs core, like org or Tramp.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  7:54                                       ` Paul Eggert
@ 2019-03-09 10:30                                         ` Eli Zaretskii
  2019-03-10  3:05                                         ` Richard Stallman
                                                           ` (2 subsequent siblings)
  3 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09 10:30 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, lokedhs, rms, juri

> Cc: Elias Mårtenson <lokedhs@gmail.com>, eliz@gnu.org,
>  juri@linkov.net, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 8 Mar 2019 23:54:28 -0800
> 
> So the form depends on N, not on whether the translation of the word
> "items" is masculine or feminine or whatever.

It actually depends on both.

> GNU gettext deals with this at the translation level, so that ordinary programs 
> can just use a function like ngettext to translate an English-language format 
> with two plural forms. Emacs Lisp should do something similar: we shouldn't try 
> to reinvent this wheel.

Right.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  8:37                                               ` Michael Albinus
@ 2019-03-09 10:45                                                 ` Eli Zaretskii
  2019-03-09 11:27                                                   ` Michael Albinus
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09 10:45 UTC (permalink / raw)
  To: Michael Albinus; +Cc: brandelune, emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: Jean-Christophe Helary <brandelune@gmail.com>,  emacs-devel@gnu.org
> Date: Sat, 09 Mar 2019 09:37:11 +0100
> 
> > If you are following the discussion, you know that not everyone agrees
> > with that.  There are advantages in having just one catalog or a small
> > number of large ones.
> 
> One catalog for the whole Emacs is not appropriate for packages with a
> life outside Emacs core, like org or Tramp.

Yes, but the question still stands whether those packages which _are_
maintained only in the Emacs repository should have one catalog or
more than one, and if more than one, then at which granularity.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:22                                                     ` Paul Eggert
  0 siblings, 2 replies; 238+ messages in thread
From: Michael Albinus @ 2019-03-09 11:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: brandelune, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

> Yes, but the question still stands whether those packages which _are_
> maintained only in the Emacs repository should have one catalog or
> more than one, and if more than one, then at which granularity.

Packages with an own subdirectory (f.e., gnus, vc) should have an own
catalog. Tramp + ange-ftp.el could get an own subdirectory + catalog as
well (these are 17 *.el files).

Best regards, Michael.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:04                                                       ` Michael Albinus
  2019-03-09 19:22                                                     ` Paul Eggert
  1 sibling, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09 17:23 UTC (permalink / raw)
  To: Michael Albinus; +Cc: brandelune, emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: brandelune@gmail.com,  emacs-devel@gnu.org
> Date: Sat, 09 Mar 2019 12:27:04 +0100
> 
> > Yes, but the question still stands whether those packages which _are_
> > maintained only in the Emacs repository should have one catalog or
> > more than one, and if more than one, then at which granularity.
> 
> Packages with an own subdirectory (f.e., gnus, vc) should have an own
> catalog. Tramp + ange-ftp.el could get an own subdirectory + catalog as
> well (these are 17 *.el files).

So you are saying that we should have a single catalog for all the
other .el files, and load it unconditionally in every Emacs session?
That'd waste memory, no?  We have more than 1500 Lisp files in Emacs.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 11:27                                                   ` Michael Albinus
  2019-03-09 17:23                                                     ` Eli Zaretskii
@ 2019-03-09 19:22                                                     ` Paul Eggert
  2019-03-09 19:39                                                       ` Eli Zaretskii
                                                                         ` (2 more replies)
  1 sibling, 3 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-09 19:22 UTC (permalink / raw)
  To: Michael Albinus, Eli Zaretskii; +Cc: brandelune, emacs-devel

Michael Albinus wrote:
> Packages with an own subdirectory (f.e., gnus, vc) should have an own
> catalog.

I'm not sure I agree.

Message catalogs are primarily of interest to translators and installers, not 
programmers. Assuming we're using the gettext machinery (a pretty safe 
assumption, as why reinvent the wheel?), the set of messages to be translated 
will be maintained automatically: programmers shouldn't care how many catalogs 
there are, or how they're updated.

Other GNU packages generally go with one large catalog, for several reasons. For 
example, translators can batch their work; similar translations can be shared 
more easily and reliably; and installation is simpler and a bit faster.

A few packages do have multiple catalogs. This is intended for convenience in 
installation, not for convenience to developers. For example, GNU gettext has 
two catalogs, one for the gettext runtime library (used by applications in 
production) and one for gettext tools (used by developers when extracting or 
doing translations). That way, operating systems packagers can install just the 
first message catalog on systems where users are not developers.

In practice, though, this multiple-catalog approach hasn't proved to be all that 
useful. Debian and Fedora both put the two gettext catalogs into one package. 
Debian has a package language-pack-fr-base that contains French translations for 
several core packages, including both gettext catalogs, and similarly for other 
languages. Fedora includes all translations of both gettext catalogs in its 
'gettext' package. So in hindsight, it seems to have been overkill for 'gettext' 
to have two translation catalogs.

With this in mind, I think it unlikely that OS packagers would find it useful 
for Emacs to maintain multiple message catalogs for each source subdirectory.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  2 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09 19:39 UTC (permalink / raw)
  To: Paul Eggert; +Cc: michael.albinus, brandelune, emacs-devel

> Cc: brandelune@gmail.com, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Sat, 9 Mar 2019 11:22:12 -0800
> 
> Other GNU packages generally go with one large catalog, for several reasons. For 
> example, translators can batch their work; similar translations can be shared 
> more easily and reliably; and installation is simpler and a bit faster.
> 
> A few packages do have multiple catalogs.

Any example of a package whose 90% gets loaded piecemeal on demand?
Out of ~500 packages that Emacs has, how many are loaded into our
"usual" session?  And if we don't load all of those 500, why should we
load their message catalogs?

This is one of those aspects that make Emacs so different from other
localized programs.  I think the difference really justifies
separating the catalogs by package.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:04                                                       ` Michael Albinus
  1 sibling, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-09 19:55 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii wrote:
> So you are saying that we should have a single catalog for all the
> other .el files, and load it unconditionally in every Emacs session?
> That'd waste memory, no?
Assuming we use GNU gettext, it'd consume virtual memory but not as much 
physical memory, as GNU gettext mmaps the message catalog (using PROT_READ so 
that it's read-only and the physical data can be shared). Only pages containing 
actual translations should need to be brought into physical memory (along with 
the indexes to these pages).

The total amount of virtual memory would depend on the catalog size. A 
reasonable upper bound for current Emacs master would be 61 MB (the sum of sizes 
of all of Emacs's .el files). Although 61 MB is nontrivial, there should be 
little trouble fitting it into virtual memory even on a 32-bit platform.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 17:23                                                     ` Eli Zaretskii
  2019-03-09 19:55                                                       ` Paul Eggert
@ 2019-03-09 20:04                                                       ` Michael Albinus
  2019-03-09 20:14                                                         ` Eli Zaretskii
  1 sibling, 1 reply; 238+ messages in thread
From: Michael Albinus @ 2019-03-09 20:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: brandelune, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

> So you are saying that we should have a single catalog for all the
> other .el files, and load it unconditionally in every Emacs session?
> That'd waste memory, no?  We have more than 1500 Lisp files in Emacs.

I haven't said this. I have no strong opinion about the other lisp
files.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 19:55                                                       ` Paul Eggert
@ 2019-03-09 20:07                                                         ` Eli Zaretskii
  2019-03-09 20:47                                                           ` Paul Eggert
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09 20:07 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Sat, 9 Mar 2019 11:55:15 -0800
> 
> Eli Zaretskii wrote:
> > So you are saying that we should have a single catalog for all the
> > other .el files, and load it unconditionally in every Emacs session?
> > That'd waste memory, no?
> Assuming we use GNU gettext, it'd consume virtual memory but not as much 
> physical memory, as GNU gettext mmaps the message catalog (using PROT_READ so 
> that it's read-only and the physical data can be shared). Only pages containing 
> actual translations should need to be brought into physical memory (along with 
> the indexes to these pages).
> 
> The total amount of virtual memory would depend on the catalog size. A 
> reasonable upper bound for current Emacs master would be 61 MB (the sum of sizes 
> of all of Emacs's .el files). Although 61 MB is nontrivial, there should be 
> little trouble fitting it into virtual memory even on a 32-bit platform.

The same is true for the Lisp files themselves.  Yet we don't load
them all in advance, because that's simply not economical.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 19:22                                                     ` Paul Eggert
  2019-03-09 19:39                                                       ` Eli Zaretskii
@ 2019-03-09 20:08                                                       ` Michael Albinus
  2019-03-10  3:09                                                       ` Richard Stallman
  2 siblings, 0 replies; 238+ messages in thread
From: Michael Albinus @ 2019-03-09 20:08 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Eli Zaretskii, brandelune, emacs-devel

Paul Eggert <eggert@cs.ucla.edu> writes:

Hi Paul,

> With this in mind, I think it unlikely that OS packagers would find it
> useful for Emacs to maintain multiple message catalogs for each source
> subdirectory.

There are packages which live outside Emacs. There are packages which
are also available as ELPA core packages. At least these packages need
their own catalog.

For all other packages I'm undecided.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 20:04                                                       ` Michael Albinus
@ 2019-03-09 20:14                                                         ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-09 20:14 UTC (permalink / raw)
  To: Michael Albinus; +Cc: brandelune, emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: brandelune@gmail.com,  emacs-devel@gnu.org
> Date: Sat, 09 Mar 2019 21:04:43 +0100
> 
> > So you are saying that we should have a single catalog for all the
> > other .el files, and load it unconditionally in every Emacs session?
> > That'd waste memory, no?  We have more than 1500 Lisp files in Emacs.
> 
> I haven't said this. I have no strong opinion about the other lisp
> files.

Oh, I agree that Gnus should have only one catalog, as should Tramp,
Calc, Org, ERC, NXML, Rmail, etc.  IOW, if a package has several Lisp
files, it should still have no more than one catalog.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 20:07                                                         ` Eli Zaretskii
@ 2019-03-09 20:47                                                           ` Paul Eggert
  0 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-09 20:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:
>> The total amount of virtual memory would depend on the catalog size. A
>> reasonable upper bound for current Emacs master would be 61 MB (the sum of sizes
>> of all of Emacs's .el files). Although 61 MB is nontrivial, there should be
>> little trouble fitting it into virtual memory even on a 32-bit platform.

> The same is true for the Lisp files themselves.  Yet we don't load
> them all in advance, because that's simply not economical.

No, it would be quite economical if we put all the .elc files into one big file 
that was mmapped in and then used lazily (which is what GNU gettext does for 
message catalogs). Emacs doesn't do that because historically it developed 
another way to use .elc files, a way that is good enough in practice even if it 
might not be as efficient as the mmap approach.

The GNU gettext library was historically developed to use mmap, and is good 
enough in practice for Emacs as-is. None of the issues discussed in this thread 
mean that we should redesign the gettext library, or split up message catalogs 
only for performance reasons. On the contrary, splitting things up (or rewriting 
the gettext library in Elisp) is likely to make things slower.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 19:39                                                       ` Eli Zaretskii
@ 2019-03-09 20:48                                                         ` Paul Eggert
  0 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-09 20:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: michael.albinus, brandelune, emacs-devel

Eli Zaretskii wrote:
>> A few packages do have multiple catalogs.
> Any example of a package whose 90% gets loaded piecemeal on demand?

I'm not quite sure what you mean by "whose 90% gets loaded piecemail on demand". 
However, it's routine for a program to retrieve only a few translations from a 
much larger catalog, so that most of the catalog is not loaded into physical 
RAM. The GNU gettext library is tuned for this sort of thing, and I see no 
reason why Emacs would pose important performance challenges to it.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-10  8:45                                           ` Yuri Khan
  2019-03-10  3:05                                         ` Richard Stallman
  2019-03-10  3:05                                         ` Richard Stallman
  3 siblings, 2 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-10  3:05 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, juri, lokedhs, emacs-devel

[[[ 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. ]]]

  > Russian has three plural forms useful for translating a string that formats an 
  > integer N. One form is for when (N%10 == 1 && N%100/10 != 1), one is for when (2 
  > <= N%10 && N%10 <= 4 && N%100/10 == 1), and one is for everything else. So the 
  > form depends on N, not on whether the translation of the word "items" is 
  > masculine or feminine or whatever.

That's how I understood it, and that is exactly what my proposal does.

I will try to explain it again.

Each clause inside numeric-select handles certain numbers.
The car of the clause (in Lispy structure) selects numbers
to handle.

'russian-masc' selects numbers that require a masculine ending, in
Russian.  You use it with a string that contains the masculine ending.

'russian-fem' selects numbers that require a feminine ending, in
Russian.  You use it with a string that contains the feminine ending.

'russian-neut' selects numbers that require a neuter ending, in
Russian.  You use it with a string that contains the neuter ending.

If this does not work, why not?

In the example that was sent, I see code that tests for certain kinds
of numbers.  But since I don't know the language that that is written
in, the mathematical conditions are the only part I understand.  I
don't see what it will _do_ in each of those conditions.  I presume it
selects the appropriate suffix for the number, but I don't follow how
it does so.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  7:54                                       ` Paul Eggert
  2019-03-09 10:30                                         ` Eli Zaretskii
  2019-03-10  3:05                                         ` Richard Stallman
@ 2019-03-10  3:05                                         ` Richard Stallman
  2019-03-10  6:14                                           ` Paul Eggert
  2019-03-10  3:05                                         ` Richard Stallman
  3 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-10  3:05 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, juri, lokedhs, emacs-devel

[[[ 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. ]]]

  > Russian has three plural forms useful for translating a string that formats an 
  > integer N. One form is for when (N%10 == 1 && N%100/10 != 1), one is for when (2 
  > <= N%10 && N%10 <= 4 && N%100/10 == 1), and one is for everything else. So the 
  > form depends on N, not on whether the translation of the word "items" is 
  > masculine or feminine or whatever.

I know that.  That is the problem I addressed.

Each clause inside numeric-select tests for and handles certain numbers.
The first thing in the clause is a condition that tests the number.
If the condition is a number, it matches only that number.

'russian-masc' tests for numbers that require a masculine noun ending;
you use it with a string that contains the masculine ending.

'russian-fem' tests for numbers that require a feminine noun ending.
you use it with a string that contains the feminine ending.

'russian-neut' tests for numbers that require a neuter noun ending.
you use it with a string that contains the neuter ending.

Since I do not speak Russian, I wrote dummies for those endings:
-m, -f and -n.

Thus,

  (numeric-case NUMBER
      (russian-masc "%d-m frobs")
      (russian-fem "%d-f frobs")
      (russian-neut "%d-n frobs"))

Do you follow, now?

  > "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 "%<PRIuMAX> byte copied, %s, %s"
  > msgid_plural "%<PRIuMAX> bytes copied, %s, %s"

It would be better if we can define these criteria just once, rather
than restate them in many places.  My idea is to incorporate it
into the definition of the conditionals, russian-masc etc.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09  7:54                                       ` Paul Eggert
                                                           ` (2 preceding siblings ...)
  2019-03-10  3:05                                         ` Richard Stallman
@ 2019-03-10  3:05                                         ` Richard Stallman
  3 siblings, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-10  3:05 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, juri, lokedhs, emacs-devel

[[[ 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. ]]]

  > which displays correctly as "Elias Mårtenson", your reply said "To: Elias 
  > =?iso-8859-1?Q?M=C3=A5rtenson?=" which displays incorrectly as "Elias 
  > MÃ¥rtenson". It looks like there's a bug in your email client, or in your 
  > configuration of it, a bug that munges names of your email correspondents.

Indeed, it is a bug.  Maybe someday I can fix it.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-09 19:22                                                     ` Paul Eggert
  2019-03-09 19:39                                                       ` Eli Zaretskii
  2019-03-09 20:08                                                       ` Michael Albinus
@ 2019-03-10  3:09                                                       ` Richard Stallman
  2019-03-10 13:38                                                         ` Eli Zaretskii
  2 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-10  3:09 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, michael.albinus, brandelune, emacs-devel

[[[ 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. ]]]

  > > Packages with an own subdirectory (f.e., gnus, vc) should have an own
  > > catalog.

  > I'm not sure I agree.

Let's start out without any particular rule about this, and let people
try various things.  That way we will work out what is useful.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-10  3:05                                         ` Richard Stallman
@ 2019-03-10  6:07                                           ` Paul Eggert
  2019-03-11  1:20                                             ` Richard Stallman
  2019-03-10  8:45                                           ` Yuri Khan
  1 sibling, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-10  6:07 UTC (permalink / raw)
  To: rms; +Cc: eliz, juri, lokedhs, emacs-devel

Richard Stallman wrote:

> If this does not work, why not?

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.

> In the example that was sent, I see code that tests for certain kinds
> of numbers.  But since I don't know the language that that is written
> in, the mathematical conditions are the only part I understand.  I
> don't see what it will _do_ in each of those conditions.  I presume it
> selects the appropriate suffix for the number, but I don't follow how
> it does so.

The GNU gettext translation code doesn't know anything about suffixes. All it 
knows is that if n%10==1 && n%100!=11 then it should use msgstr[0], else if 
n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) then it should use msgstr[1], else 
it should use msgstr[2]. The translations themselves are string formats that 
already have the proper suffixes, and GNU gettext simply copies those suffixes.

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, "двадцать 
четыре байта" in Russian). All it solves is the problem of generating phrases 
containing numerals (e.g., "24 bytes" in English, "23 байта" in Russian), as 
these are the sorts of phrases that printf formats can generate. In practice, 
this is good enough.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-10  3:05                                         ` Richard Stallman
@ 2019-03-10  6:14                                           ` Paul Eggert
  0 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-10  6:14 UTC (permalink / raw)
  To: rms; +Cc: eliz, juri, lokedhs, emacs-devel

Richard Stallman wrote:
>    > "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"
> 
> It would be better if we can define these criteria just once, rather
> than restate them in many places.

The criteria are stated just once per translation catalog. For example, the 
"Plural-forms:" line appears just once in the Russian translation catalog for 
coreutils. The criteria need not be repeated for each translated message.

If Emacs ends up having dozens or hundreds of message catalogs, it may be worth 
looking into maintaining just one copy of the Russian criteria, rather than once 
per Russian translation catalog. I hope we don't go that route, though.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-10  3:05                                         ` Richard Stallman
  2019-03-10  6:07                                           ` Paul Eggert
@ 2019-03-10  8:45                                           ` Yuri Khan
  1 sibling, 0 replies; 238+ messages in thread
From: Yuri Khan @ 2019-03-10  8:45 UTC (permalink / raw)
  To: rms
  Cc: Eli Zaretskii, Paul Eggert, Elias Mårtenson,
	Emacs developers, Juri Linkov

On Sun, Mar 10, 2019 at 10:06 AM Richard Stallman <rms@gnu.org> wrote:

> 'russian-neut' selects numbers that require a neuter ending, in
> Russian.  You use it with a string that contains the neuter ending.
>
> If this does not work, why not?

You are conflating three grammatical categories: the number, the
gender, and the declension type.

Gender and declension type are attributes of the noun, and are fixed
with respect to the noun. So if your message is about bytes, your
translator knows to use noun endings according to declension type 1a
and verb endings for masculine gender; there is nothing left for the
machine to guess. (Gender of the noun also affects the form of the
numeral if it is spelled out, but for computer-generated messages we
usually do not do that and just use digits.)

Number depends on the numeral’s value and affects the forms of the
noun, and any adjectives and verbs attached to it. Singular number
applies to values than end in 1, except for values that end in 11.
Dual number applies to values that end in 2..4, again, except for
values that end in 12..14. Plural number applies to everything else.
Any grammatical number can apply to any noun, so the translator will
provide all three wordings and let the machine select one using the
above logic.

Your example would work if you changed -masc, -fem and -neut to -sing,
-dual and -pl. But that is, as Paul mentioned, reinventing
ngettext(3).



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-10  3:09                                                       ` Richard Stallman
@ 2019-03-10 13:38                                                         ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-10 13:38 UTC (permalink / raw)
  To: rms; +Cc: eggert, michael.albinus, brandelune, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Date: Sat, 09 Mar 2019 22:09:09 -0500
> Cc: eliz@gnu.org, michael.albinus@gmx.de, brandelune@gmail.com,
> 	emacs-devel@gnu.org
> 
> Let's start out without any particular rule about this, and let people
> try various things.  That way we will work out what is useful.

Btw, translating messages also means that the likes of this:

  static bool
  set_message_1 (ptrdiff_t a1, Lisp_Object string)
  {
    [...]
    if (!NILP (BVAR (current_buffer, bidi_display_reordering)))
      bset_bidi_paragraph_direction (current_buffer, Qleft_to_right);

will need to depend on the current UI language, instead of being
hard-coded, so the value should be probably recorded in some file (the
message catalog?).  Likewise the direction of menu items and tool-bar
buttons, if/when we get to translating menus and the tool bar.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-10  6:07                                           ` Paul Eggert
@ 2019-03-11  1:20                                             ` Richard Stallman
  2019-03-11  3:52                                               ` Paul Eggert
  0 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-11  1:20 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, juri, lokedhs, emacs-devel

[[[ 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 "%<PRIuMAX> byte copied, %s, %s"
    msgid_plural "%<PRIuMAX> bytes copied, %s, %s"
    msgstr[0] "%<PRIuMAX> байт скопирован, %s, %s"
    msgstr[1] "%<PRIuMAX> байта скопировано, %s, %s"
    msgstr[2] "%<PRIuMAX> байт скопировано, %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)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 2 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-11  3:52 UTC (permalink / raw)
  To: rms; +Cc: eliz, juri, lokedhs, emacs-devel

Richard Stallman wrote:
> Compare this
> 
>    (numeric-case NUMBER
>        (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 "%<PRIuMAX> byte copied, %s, %s"
>      msgid_plural "%<PRIuMAX> bytes copied, %s, %s"
>      msgstr[0] "%<PRIuMAX> байт скопирован, %s, %s"
>      msgstr[1] "%<PRIuMAX> байта скопировано, %s, %s"
>      msgstr[2] "%<PRIuMAX> байт скопировано, %s, %s"

I'm afraid that's not a apples-to-apples comparison. The first form contains 
only the Russian translations, whereas the second form contains much more 
information: the source-code location of the untranslated strings, a copy of the 
untranslated English-language strings, and the general rules for Russian (the 
last is shared among all the Russian translations, not just the translations 
listed here). This extra information is useful for translators, and it has a 
reasonably extensive software suite that already supports it, not to mention 
translators who are already used to it.

> 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.

But Russian declension is not that simple. The Russian word for "byte" is 
"байт", but its plural form depends not only on the number (as in the above 
examples) but also in its case: the "байт" and "байта" in the above examples are 
not exhaustive. And some words have irregular declensions: for example, ребёнок 
(singular) versus де́ти (plural) for the same noun. And it's not just nouns and 
pronouns that are affected: adjectives also have singular and plural forms. And 
I have by no means exhausted the issues involved here; to get a better feeling 
for the complexity in this area, please see:

https://en.wikipedia.org/wiki/Russian_declension

Although it wouldn't be impossible for Emacs Lisp code to handle all the special 
cases for Russian declension, it would be tricky to implement, or to document it 
in a way that translators would easily understand. And we'd also have to 
implement and document similarly tricky rules for other languages. And we'd have 
to deal with the fact that not every Russian-speaker agrees with how to decline 
words like "байт" that are imported from English. These sorts of issues should 
be delegated to translators, not to likely-fragile code in Emacs Lisp (a 
technology that translators typically do not grok).

In contrast, the gettext way is relatively simple and easily understood, and is 
already common practice.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
                                                         ` (2 more replies)
  2 siblings, 3 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-11 21:48 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: emacs-devel

>> In that case, the solution that Richard proposed should suffice for most
>> cases. That is, in most cases we shouldn't need to change the Elisp
>> source code; all we need is for xgettext (or its equivalent) to consider
>> the first argument of 'message' to be a translatable string. This is
>> a standard feature of xgettext (see its --keyword argument).
>
> Yes but... The first argument of message is often a lisp expression that
> generates natural language strings programatically. That part will have to
> be modified (although far from perfect, please check what I did on
> packages.el if what I wrote above is not clear).

Please note that you have to handle not only format-strings of ‘message’,
but also ‘error’ and even more low-level ‘format’, i.e. all these

  (error STRING &rest ARGS)
  (message FORMAT-STRING &rest ARGS)
  (format-message STRING &rest OBJECTS)
  (format STRING &rest OBJECTS)

because there are many places that construct the string arguments
of ‘message’ using ‘format’ like in ‘perform-replace’:

	(message "Replaced %d occurrences%s"
		 replace-count
		 (if (> (+ skip-read-only-count
			   skip-filtered-count
			   skip-invisible-count)
                        0)
		     (format " (skipped %s)"
			     (mapconcat
			      #'identity
			      (delq nil (list
					 (if (> skip-read-only-count 0)
					     (format "%s read-only"
						     skip-read-only-count))
					 (if (> skip-invisible-count 0)
					     (format "%s invisible"
						     skip-invisible-count))
					 (if (> skip-filtered-count 0)
					     (format "%s filtered out"
						     skip-filtered-count))))
			      ", "))
		   ""))



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-11 21:48                                     ` Juri Linkov
@ 2019-03-11 22:51                                       ` Paul Eggert
  2019-03-12 21:45                                         ` Juri Linkov
  2019-03-11 23:59                                       ` Jean-Christophe Helary
  2019-03-12  9:16                                       ` Michael Albinus
  2 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-11 22:51 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Jean-Christophe Helary, emacs-devel

On 3/11/19 2:48 PM, Juri Linkov wrote:

> Please note that you have to handle not only format-strings of
> ‘message’, but also ‘error’ and even more low-level ‘format’, i.e. all
> these (error STRING &rest ARGS) (message FORMAT-STRING &rest ARGS)
> (format-message STRING &rest OBJECTS) (format STRING &rest OBJECTS)
>
I expect that 'format' won't translate its first argument, whereas
'error', 'message', and 'format-message' will. This will be for the same
reason that 'format' does not translate quotes.

> there are many places that construct the string arguments of ‘message’
> using ‘format’ like in ‘perform-replace’:
>
Yes, quite right. These places will need to be redone so that the
translation will work properly. Here's a first cut at how to redo the
perform-replace code that you mentioned (this could get fancier if needed):

  (nmessage replace-count
            "Replaced %d occurrence%s"
            "Replaced %d occurrences%s"
            replace-count
            (if (> (+ skip-read-only-count
                      skip-filtered-count
                      skip-invisible-count)
                   0)
                (format-message
                 " (skipped %s)"
                 (mapconcat
                  #'identity
                  (delq nil (list
                             (if (> skip-read-only-count 0)
                                 (format-message "%s read-only"
                                                 skip-read-only-count))
                             (if (> skip-invisible-count 0)
                                 (format-message "%s invisible"
                                                 skip-invisible-count))
                             (if (> skip-filtered-count 0)
                                 (format-message "%s filtered out"
                                                 skip-filtered-count))))
                  (gettext ", ")))
              ""))




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-11 21:48                                     ` Juri Linkov
  2019-03-11 22:51                                       ` Paul Eggert
@ 2019-03-11 23:59                                       ` Jean-Christophe Helary
  2019-03-12  9:16                                       ` Michael Albinus
  2 siblings, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-11 23:59 UTC (permalink / raw)
  To: emacs-devel



> On 2019/03/12, at 6:48, Juri Linkov <juri@linkov.net> wrote:
> 
>> Yes but... The first argument of message is often a lisp expression that
>> generates natural language strings programatically. That part will have to
>> be modified (although far from perfect, please check what I did on
>> packages.el if what I wrote above is not clear).
> 
> Please note that you have to handle not only format-strings of ‘message’,
> but also ‘error’ and even more low-level ‘format’, i.e. all these

I know. That's what I tried to do with packages.el There may be an expression or two that were too obscure for me but I think I managed to straighten all the strings there. Check the current version vs what was in the repository about 1 year ago (I don't remember when my fix was committed).

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-11  3:52                                               ` Paul Eggert
@ 2019-03-12  3:31                                                 ` Richard Stallman
  2019-03-12  3:31                                                 ` Richard Stallman
  1 sibling, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-12  3:31 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, emacs-devel, lokedhs, juri

[[[ 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. ]]]

  > > 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.

  > But Russian declension is not that simple. The Russian word for "byte" is 
  > "байт", but its plural form depends not only on the number (as in the above 
  > examples) but also in its case:

Yes, of course.  I anticipated that.  That is why I called the
construct 'russian-nom', and specified that it provides "the
appropriate declensional suffixes for the nominative case."

We could define similar constructs for some of the other cases in
Russian, whichever ones translators would want to use.

    the "байт" and "байта" in the above examples are 
    not exhaustive.

No problem.  Nobody supposed that they were.  

		    And some words have irregular declensions:

I anticipated that, too.  The low-level forms 'russian-masc' and
friends can handle all such situations.  In them you can specify the
precise conjugated forms for the irregular words in the message.

  > nd it's not just nouns and 
  > pronouns that are affected: adjectives also have singular and plural forms.

'russian-masc' and friends allow explicit conjugation of any parts of
speech.

  >  And we'd have 
  > to deal with the fact that not every Russian-speaker agrees with how to decline 
  > words like "байт" that are imported from English.

The translator is always welcome to use the low-level constructs
'russian-masc' and friends, to exercise explicit control over that.

  > I have by no means exhausted the issues involved here; to get a better feeling 
  > for the complexity in this area, please see:

  > https://en.wikipedia.org/wiki/Russian_declension

I don't need to understand all the details of Russian numbers.  I've
designed a method so flexible that it can handle any such
complexities.

  > And we'd also have to 
  > implement and document similarly tricky rules for other languages.

No, we don't.  With my approach, we don't _have to_ implement any of
these specific solutions.  We can implement whichever ones we like.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-11  3:52                                               ` Paul Eggert
  2019-03-12  3:31                                                 ` Richard Stallman
@ 2019-03-12  3:31                                                 ` Richard Stallman
  1 sibling, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-12  3:31 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eliz, emacs-devel, lokedhs, juri

[[[ 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. ]]]

  > I'm afraid that's not a apples-to-apples comparison.

It doesn't need to be.

							 The first form contains 
  > only the Russian translations, whereas the second form contains much more 
  > information: the source-code location of the untranslated strings, a copy of the 
  > untranslated English-language strings, and the general rules for Russian (the 
  > last is shared among all the Russian translations, not just the translations 
  > listed here).

I can't draw any conclusions about the translation data you sent.  It
is in a format I have never seen and you have not explained it.
So I don't try to understand it.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-11 21:48                                     ` Juri Linkov
  2019-03-11 22:51                                       ` Paul Eggert
  2019-03-11 23:59                                       ` Jean-Christophe Helary
@ 2019-03-12  9:16                                       ` Michael Albinus
  2 siblings, 0 replies; 238+ messages in thread
From: Michael Albinus @ 2019-03-12  9:16 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Jean-Christophe Helary, emacs-devel

Juri Linkov <juri@linkov.net> writes:

> Please note that you have to handle not only format-strings of ‘message’,
> but also ‘error’ and even more low-level ‘format’, i.e. all these
>
>   (error STRING &rest ARGS)
>   (message FORMAT-STRING &rest ARGS)
>   (format-message STRING &rest OBJECTS)
>   (format STRING &rest OBJECTS)

There are even more functions to be considered. Tramp, for example, uses
consequently `tramp-message' instead of `message', and `tramp-error'
instead of `error'.

Likely, we shall provide a mean that a package like Tramp can add its
own entries to such a list of functions.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-11 22:51                                       ` Paul Eggert
@ 2019-03-12 21:45                                         ` Juri Linkov
  2019-03-17 21:23                                           ` Juri Linkov
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-12 21:45 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Jean-Christophe Helary, emacs-devel

>> Please note that you have to handle not only format-strings of
>> ‘message’, but also ‘error’ and even more low-level ‘format’, i.e. all
>> these (error STRING &rest ARGS) (message FORMAT-STRING &rest ARGS)
>> (format-message STRING &rest OBJECTS) (format STRING &rest OBJECTS)
>>
> I expect that 'format' won't translate its first argument, whereas
> 'error', 'message', and 'format-message' will. This will be for the same
> reason that 'format' does not translate quotes.

Then it should be sufficient to add a gettext call to 'format-message' only,
because all other related functions 'message', 'error', 'tramp-message',
'tramp-error', etc. all they use 'format-message' directly or indirectly.

If someone would create a new branch with all standard gettext prerequisites
like Makefiles, headers, textdomain bindings, locale settings,
i.e. everything that is required to translate other GNU applications,
then I could help with testing and finding more problematic places.
Only then we could see how well gettext (designed for static translation)
performs in more dynamic Emacs environment.

>> there are many places that construct the string arguments of ‘message’
>> using ‘format’ like in ‘perform-replace’:
>>
> Yes, quite right. These places will need to be redone so that the
> translation will work properly. Here's a first cut at how to redo the
> perform-replace code that you mentioned (this could get fancier if needed):
>
>   (nmessage replace-count
>             "Replaced %d occurrence%s"
>             "Replaced %d occurrences%s"
>             replace-count

IIUC, using standard gettext functions this would rather correspond to

  (message (ngettext "Replaced %1$d occurrence%s"
                     "Replaced %1$d occurrences%s"
                     replace-count)
           replace-count
           (if (> (+ skip-read-only-count
                     skip-filtered-count
                     skip-invisible-count)
                  0)
               (format-message
                " (skipped %s)"
                (mapconcat
                 #'identity
                 (delq nil (list
                            (if (> skip-read-only-count 0)
                                (format-message "%s read-only"
                                                skip-read-only-count))
                            (if (> skip-invisible-count 0)
                                (format-message "%s invisible"
                                                skip-invisible-count))
                            (if (> skip-filtered-count 0)
                                (format-message "%s filtered out"
                                                skip-filtered-count))))
                 (gettext ", ")))
             ""))



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-12 21:45                                         ` Juri Linkov
@ 2019-03-17 21:23                                           ` Juri Linkov
  2019-03-18 21:20                                             ` Juri Linkov
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-17 21:23 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2627 bytes --]

>>> Please note that you have to handle not only format-strings of
>>> ‘message’, but also ‘error’ and even more low-level ‘format’, i.e. all
>>> these (error STRING &rest ARGS) (message FORMAT-STRING &rest ARGS)
>>> (format-message STRING &rest OBJECTS) (format STRING &rest OBJECTS)
>>>
>> I expect that 'format' won't translate its first argument, whereas
>> 'error', 'message', and 'format-message' will. This will be for the same
>> reason that 'format' does not translate quotes.
>
> Then it should be sufficient to add a gettext call to 'format-message' only,
> because all other related functions 'message', 'error', 'tramp-message',
> 'tramp-error', etc. all they use 'format-message' directly or indirectly.

Maybe I'm too stupid to comprehend the complexity of this task in its entirety,
but I tried to install gettext infrastructure in Emacs with gettextize,
and then tried to run xgettext on source code, and see no technical problems.
What I tried is to run this command, and it extracts all messages:

  xgettext --from-code=UTF-8 -kformat-message -kmessage -kerror -ktramp-message -ktramp-error *.el

then this command extracts all Gnus messages into a separate file:

  xgettext --from-code=UTF-8 -kformat-message -kmessage -kerror gnus/*.el -o gnus_messages.po

this command extracts all menu items:

  xgettext --from-code=UTF-8 -kmenu-item *.el **/*.el -o menus.po

and this extracts all docstrings:

  xgettext --from-code=UTF-8 -kdefcustom:3 -kdefvar:3 -kdefun:3 *.el **/*.el -o docstrings.po

The size of docstrings.po is about 9MB, so perhaps it should reside in
a separate catalog defined by e.g.

  (defdomain emacs-docstrings

with semantics similar to defgroup, but I have no opinion about this.

I think this project urgently needs a coordinator: to negotiate with
package authors and translation teams about how to better split
translations to message catalogs.  So there are not so much technical
problems, but mostly organizational ones.

> IIUC, using standard gettext functions this would rather correspond to
>
>   (message (ngettext "Replaced %1$d occurrence%s"
>                      "Replaced %1$d occurrences%s"
>                      replace-count)

It seems better to start with this standard function
and add more optimizations like ‘nmessage’ later.

Other Lisp implementations use ‘ngettext’ as well, e.g.:
https://clisp.sourceforge.io/impnotes.html#ggettext

So I'm going to start with more obvious parts of the task
by fixing the current bugs of incorrect English syntax
in a forward-compatible way:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: i18n-ngettext.patch --]
[-- Type: text/x-diff, Size: 6767 bytes --]

diff --git a/lisp/subr.el b/lisp/subr.el
index 6c0ad00afa..1f000f77ad 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -342,6 +342,13 @@ define-error
          (delete-dups (copy-sequence (cons name conditions))))
     (when message (put name 'error-message message))))
 
+(defun ngettext (msgid msgid_plural n &optional _domain _category)
+  "Return the plural form of the translation for of MSGID and N.
+In the given DOMAIN, depending on the given CATEGORY.  MSGID and
+MSGID_PLURAL should be ASCII strings, and are normally the English singular
+and English plural variant of the message, respectively."
+  (if (/= n 1) msgid_plural msgid))
+
 ;; We put this here instead of in frame.el so that it's defined even on
 ;; systems where frame.el isn't loaded.
 (defun frame-configuration-p (object)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index a5427dd8b7..c0f47159c9 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -459,7 +459,7 @@ grep-mode-font-lock-keywords
      ;; remove match from grep-regexp-alist before fontifying
      ("^Grep[/a-zA-Z]* started.*"
       (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t))
-     ("^Grep[/a-zA-Z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?matches found\\)\\|\\(no matches found\\)\\).*"
+     ("^Grep[/a-zA-Z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? found\\)\\|\\(no matches found\\)\\).*"
       (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t)
       (1 compilation-info-face nil t)
       (2 compilation-warning-face nil t))
@@ -552,7 +552,10 @@ grep-exit-message
       ;; so the buffer is still unmodified if there is no output.
       (cond ((and (zerop code) (buffer-modified-p))
 	     (if (> grep-num-matches-found 0)
-                 (cons (format "finished with %d matches found\n" grep-num-matches-found)
+                 (cons (format (ngettext "finished with %d match found\n"
+                                         "finished with %d matches found\n"
+                                         grep-num-matches-found)
+                               grep-num-matches-found)
                        "matched")
                '("finished with matches found\n" . "matched")))
 	    ((not (buffer-modified-p))
diff --git a/lisp/replace.el b/lisp/replace.el
index 59ad1a375b..318a9fb025 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -983,7 +983,10 @@ flush-lines
 		       (progn (forward-line 1) (point)))
         (setq count (1+ count))))
     (set-marker rend nil)
-    (when interactive (message "Deleted %d matching lines" count))
+    (when interactive (message (ngettext "Deleted %d matching line"
+					 "Deleted %d matching lines"
+					 count)
+			       count))
     count))
 
 (defun how-many (regexp &optional rstart rend interactive)
@@ -1032,9 +1035,10 @@ how-many
 	(if (= opoint (point))
 	    (forward-char 1)
 	  (setq count (1+ count))))
-      (when interactive (message "%d occurrence%s"
-				 count
-				 (if (= count 1) "" "s")))
+      (when interactive (message (ngettext "%d occurrence"
+					   "%d occurrences"
+					   count)
+				 count))
       count)))
 
 \f
@@ -1617,11 +1621,12 @@ occur-1
 		  (not (eq occur-excluded-properties t))))))
 	  (let* ((bufcount (length active-bufs))
 		 (diff (- (length bufs) bufcount)))
-	    (message "Searched %d buffer%s%s; %s match%s%s"
-		     bufcount (if (= bufcount 1) "" "s")
+	    (message "Searched %d %s%s; %s %s%s"
+		     bufcount
+		     (ngettext "buffer" "buffers" bufcount)
 		     (if (zerop diff) "" (format " (%d killed)" diff))
 		     (if (zerop count) "no" (format "%d" count))
-		     (if (= count 1) "" "es")
+		     (ngettext "match" "matches" count)
 		     ;; Don't display regexp if with remaining text
 		     ;; it is longer than window-width.
 		     (if (> (+ (length (or (get-text-property 0 'isearch-string regexp)
@@ -1856,14 +1861,15 @@ occur-engine
 		  (let ((beg (point))
 		        end)
 		    (insert (propertize
-			     (format "%d match%s%s%s in buffer: %s%s\n"
-				     matches (if (= matches 1) "" "es")
+			     (format "%d %s%s%s in buffer: %s%s\n"
+				     matches
+				     (ngettext "match" "matches" matches)
 				     ;; Don't display the same number of lines
 				     ;; and matches in case of 1 match per line.
 				     (if (= lines matches)
-				         "" (format " in %d line%s"
+				         "" (format " in %d %s"
 						    lines
-						    (if (= lines 1) "" "s")))
+						    (ngettext "line" "lines" lines)))
 				     ;; Don't display regexp for multi-buffer.
 				     (if (> (length buffers) 1)
 				         "" (occur-regexp-descr regexp))
@@ -1889,13 +1895,15 @@ occur-engine
 	(goto-char (point-min))
 	(let ((beg (point))
 	      end)
-	  (insert (format "%d match%s%s total%s:\n"
-			  global-matches (if (= global-matches 1) "" "es")
+	  (insert (format "%d %s%s total%s:\n"
+			  global-matches
+			  (ngettext "match" "matches" global-matches)
 			  ;; Don't display the same number of lines
 			  ;; and matches in case of 1 match per line.
 			  (if (= global-lines global-matches)
-			      "" (format " in %d line%s"
-					 global-lines (if (= global-lines 1) "" "s")))
+			      "" (format " in %d %s"
+					 global-lines
+					 (ngettext "line" "lines" global-lines)))
 			  (occur-regexp-descr regexp)))
 	  (setq end (point))
 	  (when title-face
@@ -2730,10 +2738,10 @@ perform-replace
                                            (1+ num-replacements))))))
                              (when (and (eq def 'undo-all)
                                         (null (zerop num-replacements)))
-                               (message "Undid %d %s" num-replacements
-                                        (if (= num-replacements 1)
-                                            "replacement"
-                                          "replacements"))
+                               (message (ngettext "Undid %d replacement"
+                                                  "Undid %d replacements"
+                                                  num-replacements)
+                                        num-replacements)
                                (ding 'no-terminate)
                                (sit-for 1)))
 			   (setq replaced nil last-was-undo t last-was-act-and-show nil)))
@@ -2859,9 +2867,10 @@ perform-replace
                       last-was-act-and-show     nil))))))
       (replace-dehighlight))
     (or unread-command-events
-	(message "Replaced %d occurrence%s%s"
+	(message (ngettext "Replaced %d occurrence%s"
+			   "Replaced %d occurrences%s"
+			   replace-count)
 		 replace-count
-		 (if (= replace-count 1) "" "s")
 		 (if (> (+ skip-read-only-count
 			   skip-filtered-count
 			   skip-invisible-count)

^ permalink raw reply related	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-17 21:23                                           ` Juri Linkov
@ 2019-03-18 21:20                                             ` Juri Linkov
  2019-03-18 21:55                                               ` Paul Eggert
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-18 21:20 UTC (permalink / raw)
  To: emacs-devel

> Other Lisp implementations use ‘ngettext’ as well, e.g.:
> https://clisp.sourceforge.io/impnotes.html#ggettext

And this command will extract ‘ngettext’ messages:

  xgettext --from-code=UTF-8 -kngettext:1,2 *.el **/*.el

Using only ‘ngettext’ has an additional advantage:
there will be no need to add more such functions as
nmessage, nerror, nuser-error, ntramp-error, etc.

But for cases when ‘message’ will receive a string
already translated by ‘ngettext’, e.g.:

  (message (ngettext "Replaced %d occurrence%s"
                     "Replaced %d occurrences%s"
                     replace-count)

we need to mark translated strings like Richard suggested:

  (defun ngettext (msgid msgid_plural n &optional _domain _category)
    "Return the plural form of the translation for of MSGID and N."
    (propertize (if (/= n 1) msgid_plural msgid) 'translated t))

so ‘format-message’ should check if its first argument is translated,
and not to call gettext again.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-18 21:20                                             ` Juri Linkov
@ 2019-03-18 21:55                                               ` Paul Eggert
  2019-03-19 20:40                                                 ` Juri Linkov
  0 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-18 21:55 UTC (permalink / raw)
  To: Juri Linkov; +Cc: emacs-devel

On 3/18/19 2:20 PM, Juri Linkov wrote:
> Using only ‘ngettext’ has an additional advantage:
> there will be no need to add more such functions as
> nmessage, nerror, nuser-error, ntramp-error, etc.

That's not a real advantage, as there is no need to add those functions
anyway. They are merely conveniences that we can either add or not add,
depending on whether the convenience in use is worth the hassle of
supporting and documenting the functions.

For example, suppose 'message' always translates its format argument and
that there is no 'nmessage' function. Then you can use 'message' this
way to handle plurals:

  (message "%s" (format (ngettext n "%d item" "%d items") n))

If we find expressions like the above to be common, we can easily write
an nmessage function in Lisp, so that the code can look like this instead:

  (nmessage n "%d item" "%d items" n)

but this is merely a convenience.


> ‘format-message’ should check if its first argument is translated,
> and not to call gettext again.
>
I'd rather not involve dynamic checking like that, as it's fragile and
more complicated to explain and a bit slower. format-message should
either always translate, or never translate. In practice, it'll be more
convenient for format-message to always translate, so I expect we should
do it that way.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-18 21:55                                               ` Paul Eggert
@ 2019-03-19 20:40                                                 ` Juri Linkov
  0 siblings, 0 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-19 20:40 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel

>> ‘format-message’ should check if its first argument is translated,
>> and not to call gettext again.
>>
> I'd rather not involve dynamic checking like that, as it's fragile and
> more complicated to explain and a bit slower. format-message should
> either always translate, or never translate. In practice, it'll be more
> convenient for format-message to always translate, so I expect we should
> do it that way.

I see this as a kind of optimization.  But I don't know if it is necessary
until trying how fast gettext is on very large translation files
(if it hashes translations strings then should be fast enough).



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
@ 2019-03-20 11:59 Bruno Haible
  2019-03-20 16:36 ` Paul Eggert
                   ` (2 more replies)
  0 siblings, 3 replies; 238+ messages in thread
From: Bruno Haible @ 2019-03-20 11:59 UTC (permalink / raw)
  To: rms-mXXj517/zsQ; +Cc: bug-gettext-mXXj517/zsQ, emacs-devel-mXXj517/zsQ

Richard Stallman wrote in
<https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00328.html>:

> 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.

It is, of course, tempting to try to do morphological analysis in an
algorithmic way, based on our background as algorithm hackers. François
Pinard and others considered this, back in 1995 when they started i18n in GNU.

The reason this approach was not chosen is still valid today:

When you design a translation system, you have two personas:
  - the programmer,
  - the translator.

The translation system defines
  1) which information flows from the programmer to the translator,
     and in which format,
  2) which information flows back from the translator to the programmer,
     and in which format.

And it has to cope with the assumed skills of these personas:

  - The programmer, you can assume, can write and understand algorithms,
    but does not master the grammar of more than one language (usually).

  - The translator, you can assume, can translate sentences and knows
    about the different meanings of words in different context. But they
    cannot write nor understand algorithms. Many translators, in fact,
    don't see the grammar as a set of rules.

You may find some people on the intersection, such as a Russian hacker,
but it is hard to find people with both skills for languages such as
Vietnamese, Slovenian, or Basque. So, you better design the system in
such a way that no person is assumed to have both skills.

The challenge is to define these formats 1) and 2) in a way that

  * Programmers can do their job with their skills (i.e. don't need to
    understand Russian).

  * Translators can do their job with their skills (i.e. don't need to
    understand algorithms).

In the gettext approach (where 1) are POT files and 2) are PO files) we
added plural form handling, which is just a small morphological variation,
and it required a significant amount of documentation and education for
translators. I would say, it is on the limit what we can make translators
grok.

Now, when you give a translator a string

   "russian-nom:%d байт%| скопирован%|, %s, %s"

you need to think about the appropriate tooling that will make the
translator understand
  - what 'russian-nom' means,
  - what the '|' characters mean,
  - what the '%' characters mean.
Either the translator tool should somehow highlight these characters
and present on-line help, or it should present it as a sequence of
strings to translate:

  Rule: russian-nom
  "%d байт"
  " скопирован"
  ", %s, %s"

It is important to realize that each such case of morphological variation
requires translator tooling support. And unfortunately different such tools
exist, and every translator has their preferred one. For the plural form
handling alone, it took several years until the main tools had support for
it in their UI.

Bruno




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-20 11:59 Bruno Haible
@ 2019-03-20 16:36 ` Paul Eggert
  2019-03-20 21:32 ` Juri Linkov
  2019-03-21  2:14 ` Richard Stallman
  2 siblings, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-20 16:36 UTC (permalink / raw)
  To: Bruno Haible, rms-mXXj517/zsQ
  Cc: emacs-devel-mXXj517/zsQ, bug-gettext-mXXj517/zsQ

On 3/20/19 4:59 AM, Bruno Haible wrote:
> In the gettext approach (where 1) are POT files and 2) are PO files) we
> added plural form handling, which is just a small morphological variation,
> and it required a significant amount of documentation and education for
> translators. I would say, it is on the limit what we can make translators
> grok.

Thanks for making the point better than I was able to.

There's another reason pluralization is a good place to stop. GNU
gettext attacks the problem of how to translate formats containing
printf conversion specifications like %d, in phrases like "%d items".
That is, gettext deals with the grammatical problem of number, because
printf formats numbers. However, there are no printf conversion
specifications for other grammatical aspects such as case, gender,
tense, voice, or mood, which means there is no significant need for
gettext to deal with these other aspects.

In hindsight it might have been better if gettext had not attacked the
problem of plurals. As you wrtite, even plurals are nearly a bridge too
far. But it's done now, so we might as well use it.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-20 11:59 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]   ` <87h8bx5ijn.fsf-i9wRM+HIrmlRTR8OWt4JRw@public.gmane.org>
  2019-03-21  2:14 ` Richard Stallman
  2 siblings, 2 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-20 21:32 UTC (permalink / raw)
  To: Bruno Haible; +Cc: emacs-devel, rms, bug-gettext

> Richard Stallman wrote in
> <https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00328.html>:
>
>> 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.
>
> It is, of course, tempting to try to do morphological analysis in an
> algorithmic way, based on our background as algorithm hackers. François
> Pinard and others considered this, back in 1995 when they started i18n in GNU.
>
> The reason this approach was not chosen is still valid today:
>
> When you design a translation system, you have two personas:
>   - the programmer,
>   - the translator.
>
> The translation system defines
>   1) which information flows from the programmer to the translator,
>      and in which format,
>   2) which information flows back from the translator to the programmer,
>      and in which format.
>
> And it has to cope with the assumed skills of these personas:
>
>   - The programmer, you can assume, can write and understand algorithms,
>     but does not master the grammar of more than one language (usually).
>
>   - The translator, you can assume, can translate sentences and knows
>     about the different meanings of words in different context. But they
>     cannot write nor understand algorithms. Many translators, in fact,
>     don't see the grammar as a set of rules.
>
> You may find some people on the intersection, such as a Russian hacker,
> but it is hard to find people with both skills for languages such as
> Vietnamese, Slovenian, or Basque. So, you better design the system in
> such a way that no person is assumed to have both skills.
>
> The challenge is to define these formats 1) and 2) in a way that
>
>   * Programmers can do their job with their skills (i.e. don't need to
>     understand Russian).
>
>   * Translators can do their job with their skills (i.e. don't need to
>     understand algorithms).
>
> In the gettext approach (where 1) are POT files and 2) are PO files) we
> added plural form handling, which is just a small morphological variation,
> and it required a significant amount of documentation and education for
> translators. I would say, it is on the limit what we can make translators
> grok.
>
> Now, when you give a translator a string
>
>    "russian-nom:%d байт%| скопирован%|, %s, %s"
>
> you need to think about the appropriate tooling that will make the
> translator understand
>   - what 'russian-nom' means,
>   - what the '|' characters mean,
>   - what the '%' characters mean.
> Either the translator tool should somehow highlight these characters
> and present on-line help, or it should present it as a sequence of
> strings to translate:
>
>   Rule: russian-nom
>   "%d байт"
>   " скопирован"
>   ", %s, %s"
>
> It is important to realize that each such case of morphological variation
> requires translator tooling support. And unfortunately different such tools
> exist, and every translator has their preferred one. For the plural form
> handling alone, it took several years until the main tools had support for
> it in their UI.

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.

But there is no need because gettext already strikes a decent balance
between complexity of natural languages and practical needs of
program internationalization where translators themselves decide
how words in messages should be inflected for different plural forms.

Currently we have more urgent tasks after the first step of adding
‘ngettext’ like in CLISP, the development stalled on the problem of
splitting messages into domains.

But maybe CLISP already provides a good way to map packages to gettext
domains?  Does it require every package to have a separate domain or
it collects translations from all packages into one domain?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-20 11:59 Bruno Haible
  2019-03-20 16:36 ` Paul Eggert
  2019-03-20 21:32 ` Juri Linkov
@ 2019-03-21  2:14 ` Richard Stallman
  2019-03-22  1:26   ` Bruno Haible
  2 siblings, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-21  2:14 UTC (permalink / raw)
  To: Bruno Haible; +Cc: bug-gettext, emacs-devel

[[[ 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. ]]]

  > When you design a translation system, you have two personas:
  >   - the programmer,
  >   - the translator.

  > The translation system defines
  >   1) which information flows from the programmer to the translator,
  >      and in which format,
  >   2) which information flows back from the translator to the programmer,
    >      and in which format.

That argument is valid for gettext, but not for Emacs.

This is the part that doesn't fit Emacs:

  >   - The programmer, you can assume, can write and understand algorithms,
  >     but does not master the grammar of more than one language (usually).

In the development of Emacs there are many programmers, even some who
speak Russian.  We will have no difficulty implementing and
maintaining russian-masc, russian-nom, and so on.

These constructs do not need to be known to gettext.
For gettext, they will simply be part of the translation string.

We can do this for those languages in which it is convenient for us --
those that someone knows and decides to handle.  For other languages,
we can stick to the low-level gettext approach, which will work
for all languages.

    > - The translator, you can assume, can translate sentences and knows
    >   about the different meanings of words in different context. 

The Russian translation team for Emacs will not have difficulty using
russian-masc, russian-nom, and so on.  Being Russian speakers, they
will understand how these constructs make sense for Russian, once
they read the documentation for them.

  > In the gettext approach (where 1) are POT files and 2) are PO files) we
  > added plural form handling, which is just a small morphological variation,
  > and it required a significant amount of documentation and education for
  > translators. I would say, it is on the limit what we can make translators
  > grok.

The gettext approach requires coding the algorithm in the translations file.
My approach has the advantage of avoiding that.

  > Now, when you give a translator a string

  >    "russian-nom:%d байт%| скопирован%|, %s, %s"

  > you need to think about the appropriate tooling that will make the
  > translator understand
  >   - what 'russian-nom' means,
  >   - what the '|' characters mean,
  >   - what the '%' characters mean.

I picked that syntax on the spur of the moment because I thought it
would be natural and convenient.  If that isn't natural and convenient
for the translators, we can pick a different one.

  > Either the translator tool should somehow highlight these characters
  > and present on-line help,

That would be good to do.

  >  it should present it as a sequence of
  > strings to translate:

  >   Rule: russian-nom
  >   "%d байт"
  >   " скопирован"
  >   ", %s, %s"

Is this general enough to handle all the use cases?
I don't know -- I don't speak Russian.

  > For the plural form
  > handling alone, it took several years until the main tools had support for
  > it in their UI.

What sort of syntax do the tools support for plurals?

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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>
       [not found]   ` <87h8bx5ijn.fsf-i9wRM+HIrmlRTR8OWt4JRw@public.gmane.org>
  1 sibling, 1 reply; 238+ messages in thread
From: Richard Stallman @ 2019-03-21  2:14 UTC (permalink / raw)
  To: Juri Linkov; +Cc: bug-gettext, bruno, emacs-devel

[[[ 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. ]]]

  > 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.

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.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
       [not found]   ` <87h8bx5ijn.fsf-i9wRM+HIrmlRTR8OWt4JRw@public.gmane.org>
@ 2019-03-21  2:55     ` Bruno Haible
  0 siblings, 0 replies; 238+ messages in thread
From: Bruno Haible @ 2019-03-21  2:55 UTC (permalink / raw)
  To: Juri Linkov
  Cc: emacs-devel-mXXj517/zsQ, rms-mXXj517/zsQ, bug-gettext-mXXj517/zsQ

Hi Juri,

> Currently we have more urgent tasks after the first step of adding
> ‘ngettext’ like in CLISP, the development stalled on the problem of
> splitting messages into domains.

You are very welcome to ask for advice on bug-gettext. It's there that
you can find the experts. (I don't read emacs-devel usually.)

> But maybe CLISP already provides a good way to map packages to gettext
> domains?  Does it require every package to have a separate domain or
> it collects translations from all packages into one domain?

What matters for the domains is what code gets distributed together.

  * When you have two Lisp packages that are released by separate
    groups of developers, of course they must use separate translation
    domains. Otherwise you would have to co-ordinate the merging of their
    POT files, which makes no sense since they make releases at different
    times.

  * On the other hand, when you have two Lisp packages that are always
    released together, in the same tarball, it is more efficient for the
    translators if they receive one notification about a new POT file
    than two notifications about two POT files on the same day.

For Common Lisp code, the Common Lisp package name _may_ be used to
derive the domain name. But this is up to the developers.

For reference, i18n in CLISP is described here:
https://clisp.sourceforge.io/impnotes/i18n-mod.html
https://www.gnu.org/software/gettext/manual/html_node/Common-Lisp.html
and there is a sample and a test case in GNU gettext:
https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-tools/examples/hello-clisp/hello.lisp.in
https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-tools/tests/lang-clisp

Bruno




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-04  1:46                 ` Jean-Christophe Helary
  2019-03-06  9:38                   ` Elias Mårtenson
@ 2019-03-21 20:33                   ` Clément Pit-Claudel
  2019-03-21 20:50                     ` Eli Zaretskii
                                       ` (2 more replies)
  1 sibling, 3 replies; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-21 20:33 UTC (permalink / raw)
  To: Jean-Christophe Helary, Juri Linkov
  Cc: Eli Zaretskii, Richard Stallman, emacs-devel

On 2019-03-03 20:46, Jean-Christophe Helary wrote:
>> On Mar 4, 2019, at 5:57, Juri Linkov <juri@linkov.net <mailto:juri@linkov.net>> wrote:
>> My intention was to fix the bug which manifests itself in
>> grammatically incorrect sentences displayed by ‘message’ like
>>
>>  Deleted 1 matching lines
>>  1 matches found
>>  ...
> 
> The best way to do that (I fixed the almost 100% of the package.el code with that) is to not use such syntax but rather things like:
> 
> Number of matches found: %d

I'm a bit late to the party, but I hope it's still OK to respond :)  This is a valid way to work around the issue, but I'm not sure how much I like it (I just noticed the change after pulling the latest Emacs from git).

The current package.el doesn't say 'Number of packages that are not available: %d'; instead, it says 'Packages that are not available: %d' (it used to say "%s packages are not available").  Other examples are 'Packages to hide: %d' (originally 'Hiding %s packages') and 'Packages that can be upgraded: %d; type `%s' to mark for upgrading.' (originally '%d package%s can be upgraded; type `%s' to mark %s for upgrading.').

I find this suboptimal for three reasons: First, after 'packages that are not available', I expect to see a list of packages, not a number.  Second, the new way the message is phrased puts the important bit in a less obvious place (in the middle of the message, rather than at the beginning: "Packages that can be upgraded: 5; type `U' to mark for upgrading"). Third (but this is a bit more fuzzy), the way the message is now written makes errors sound like normal events ('Packages that are not available: 3' read like the response to the query 'how many packages are not available?').

I understand that there's hope to support plurals and internationalization in a more principled way soon, but is this workaround (61f73703c74756e6963cc622f03bcc6938ab71b2) needed in the meantime?

Clément.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:17                     ` Jean-Christophe Helary
  2019-03-21 21:59                     ` Juri Linkov
  2 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-21 20:50 UTC (permalink / raw)
  To: Clément Pit-Claudel; +Cc: emacs-devel, brandelune, rms, juri

> Cc: Eli Zaretskii <eliz@gnu.org>, Richard Stallman <rms@gnu.org>,
>  emacs-devel@gnu.org
> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Thu, 21 Mar 2019 16:33:21 -0400
> 
> I understand that there's hope to support plurals and internationalization in a more principled way soon, but is this workaround (61f73703c74756e6963cc622f03bcc6938ab71b2) needed in the meantime?

Whether we like it or not, it's one of the standard methods of solving
these situations.  It might sound somewhat more awkward in some
languages than the original wording, but it has other more important
advantages.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-22  8:22                         ` Eli Zaretskii
  0 siblings, 2 replies; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-21 21:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, brandelune, rms, juri

On 2019-03-21 16:50, Eli Zaretskii wrote:
>> Cc: Eli Zaretskii <eliz@gnu.org>, Richard Stallman <rms@gnu.org>,
>>  emacs-devel@gnu.org
>> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
>> Date: Thu, 21 Mar 2019 16:33:21 -0400
>>
>> I understand that there's hope to support plurals and internationalization in a more principled way soon, but is this workaround (61f73703c74756e6963cc622f03bcc6938ab71b2) needed in the meantime?
> 
> Whether we like it or not, it's one of the standard methods of solving
> these situations.  It might sound somewhat more awkward in some
> languages than the original wording, but it has other more important
> advantages.

I don't understand: what does this change buy us currently, except the awkward wording?  Arguably the patch for the change was a simplification, but the original author had actually writen the code to get the English plurals right in most cases.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21 20:33                   ` Clément Pit-Claudel
  2019-03-21 20:50                     ` Eli Zaretskii
@ 2019-03-21 21:17                     ` Jean-Christophe Helary
  2019-03-21 21:59                     ` Juri Linkov
  2 siblings, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-21 21:17 UTC (permalink / raw)
  To: emacs-devel

Thank you Clement for the remarks. I wrote all at first because there were issues with the original code that did not take into account some singular cases. When I checked the code, I found a terrible amount of strings mixed with code and so I went a bit further and "fixed" that too. I don't remember forgetting about that "Number" issue you mention though. Sorry for that.

Jean-Christophe 

> On Mar 22, 2019, at 5:33, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
> 
> On 2019-03-03 20:46, Jean-Christophe Helary wrote:
>>> On Mar 4, 2019, at 5:57, Juri Linkov <juri@linkov.net <mailto:juri@linkov.net>> wrote:
>>> My intention was to fix the bug which manifests itself in
>>> grammatically incorrect sentences displayed by ‘message’ like
>>> 
>>> Deleted 1 matching lines
>>> 1 matches found
>>> ...
>> 
>> The best way to do that (I fixed the almost 100% of the package.el code with that) is to not use such syntax but rather things like:
>> 
>> Number of matches found: %d
> 
> I'm a bit late to the party, but I hope it's still OK to respond :)  This is a valid way to work around the issue, but I'm not sure how much I like it (I just noticed the change after pulling the latest Emacs from git).
> 
> The current package.el doesn't say 'Number of packages that are not available: %d'; instead, it says 'Packages that are not available: %d' (it used to say "%s packages are not available").  Other examples are 'Packages to hide: %d' (originally 'Hiding %s packages') and 'Packages that can be upgraded: %d; type `%s' to mark for upgrading.' (originally '%d package%s can be upgraded; type `%s' to mark %s for upgrading.').
> 
> I find this suboptimal for three reasons: First, after 'packages that are not available', I expect to see a list of packages, not a number.  Second, the new way the message is phrased puts the important bit in a less obvious place (in the middle of the message, rather than at the beginning: "Packages that can be upgraded: 5; type `U' to mark for upgrading"). Third (but this is a bit more fuzzy), the way the message is now written makes errors sound like normal events ('Packages that are not available: 3' read like the response to the query 'how many packages are not available?').
> 
> I understand that there's hope to support plurals and internationalization in a more principled way soon, but is this workaround (61f73703c74756e6963cc622f03bcc6938ab71b2) needed in the meantime?
> 
> Clément.
> 

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-22  8:22                         ` Eli Zaretskii
  1 sibling, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-21 21:21 UTC (permalink / raw)
  To: emacs-devel



> On Mar 22, 2019, at 6:03, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
> 
> but the original author had actually writen the code to get the English plurals right in most cases.

Yes, but the issue is not to have "most cases right" but rather to have readable strings in the code.

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-21 21:34 UTC (permalink / raw)
  To: emacs-devel

On 2019-03-21 17:21, Jean-Christophe Helary wrote:
>> On Mar 22, 2019, at 6:03, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
>>
>> but the original author had actually writen the code to get the English plurals right in most cases.
> 
> Yes, but the issue is not to have "most cases right" but rather to have readable strings in the code.

But is that worth the loss in readability in the UI?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
       [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-22 20:50       ` Chusslove Illich
  1 sibling, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-21 21:45 UTC (permalink / raw)
  To: Richard Stallman; +Cc: bug-gettext-mXXj517/zsQ, emacs-devel-mXXj517/zsQ

>   > 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.
>
> 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.

The misconception of your proposal is assuming a pure algorithmic
inflection whereas actually inflection in Russian is dictionary-based
(in addition to algorithms that process words from the dictionary),
i.e. to be able to inflect a word you need a large dictionary of all
words where each word in the dictionary has at least the following
lexical properties:
- part of speech
- noun grammatical gender: masculine, feminine, neuter
- noun animacy: animate, inanimate
- inflection type

And the main parameters that influence the declension are:
- grammatical case (one of 6 basic: nominative, genitive, dative,
  accusative, instrumental, prepositional plus some additional)
- number: singular and plural.  Dual is not a grammatical number,
  it only influences the choice of cases for words after numerals:
  for 1    - nominative case, singular
  for 2..4 - genitive case, singular
  for 5..  - genitive case, plural

An additional problem is that there are many exceptions:
some words have an additional form called "count form"
https://en.wikipedia.org/wiki/Russian_declension#Count_form

For instance, an exception is to use "5 байт" (5 byte) instead of
what should be according to the grammatical rule that requires
genitive plural for most other words, but not for bytes,
i.e. this is incorrect: "5 байтов" (5 bytes).

Such exceptions are marked in the dictionary with a special
property that has different values:

- mandatory: only the count form is allowed for such units
  of measure as amperes, watts, volts, bits, bytes, etc.
- optional: both forms are accepted for such units as angstroms,
  gauss, (kilo)grams, decibels, carats, microns, ohms, röntgen, etc.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-21 21:56 UTC (permalink / raw)
  To: emacs-devel



> On Mar 22, 2019, at 6:34, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
> 
> On 2019-03-21 17:21, Jean-Christophe Helary wrote:
>>> On Mar 22, 2019, at 6:03, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
>>> 
>>> but the original author had actually writen the code to get the English plurals right in most cases.
>> 
>> Yes, but the issue is not to have "most cases right" but rather to have readable strings in the code.
> 
> But is that worth the loss in readability in the UI?

That's a subjective issue. I think the strings are more readable now and there are potentially less grammatical mistakes (I am not talking about the "Number of" part you mentioned). While before it was easy to not notice a bug in the code. I think that is a net gain.

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21 20:33                   ` Clément Pit-Claudel
  2019-03-21 20:50                     ` Eli Zaretskii
  2019-03-21 21:17                     ` Jean-Christophe Helary
@ 2019-03-21 21:59                     ` Juri Linkov
  2019-03-22  8:22                       ` Eli Zaretskii
  2 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-21 21:59 UTC (permalink / raw)
  To: Clément Pit-Claudel
  Cc: Eli Zaretskii, emacs-devel, Jean-Christophe Helary,
	Richard Stallman

> The current package.el doesn't say 'Number of packages that are not
> available: %d'; instead, it says 'Packages that are not available: %d'
> (it used to say "%s packages are not available").

Both don't sound natural, it's too robotic.
Let's use ngettext plurals from now on.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-21 22:05 UTC (permalink / raw)
  To: Jean-Christophe Helary, emacs-devel

On 2019-03-21 17:56, Jean-Christophe Helary wrote:
> 
> 
>> On Mar 22, 2019, at 6:34, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
>>
>> On 2019-03-21 17:21, Jean-Christophe Helary wrote:
>>>> On Mar 22, 2019, at 6:03, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
>>>>
>>>> but the original author had actually writen the code to get the English plurals right in most cases.
>>>
>>> Yes, but the issue is not to have "most cases right" but rather to have readable strings in the code.
>>
>> But is that worth the loss in readability in the UI?
> 
> That's a subjective issue. I think the strings are more readable now and there are potentially less grammatical mistakes (I am not talking about the "Number of" part you mentioned). While before it was easy to not notice a bug in the code. I think that is a net gain.

Understood, thanks.  I would have preferred sticking with the previous phrasing, but a single opinion is not much to act upon.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21 22:05                               ` Clément Pit-Claudel
@ 2019-03-21 23:46                                 ` Jean-Christophe Helary
  0 siblings, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-21 23:46 UTC (permalink / raw)
  To: emacs-devel



> On Mar 22, 2019, at 7:05, Clément Pit-Claudel <cpitclaudel@gmail.com> wrote:
> 
>> That's a subjective issue. I think the strings are more readable now and there are potentially less grammatical mistakes (I am not talking about the "Number of" part you mentioned). While before it was easy to not notice a bug in the code. I think that is a net gain.
> 
> Understood, thanks.  I would have preferred sticking with the previous phrasing, but a single opinion is not much to act upon.

:) No, it's quite the opposite. everything starts from a single opinion. I would also prefer to stick to more natural sounding phrasing, but the tools available at the moment don't allow for that.

It is usually accepted in code internationalization that concatenation and other similar processes should not be used to generate natural language strings. So there are 2 ways to deal with that: either you simplify the strings to the point where there are as little variations possible (my choice for packages.el) or you use strings redundancy to cover all the possible variations with processes that support that (which we don't have at the moment).

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21  2:14 ` Richard Stallman
@ 2019-03-22  1:26   ` Bruno Haible
  2019-03-23  2:29     ` Richard Stallman
  0 siblings, 1 reply; 238+ messages in thread
From: Bruno Haible @ 2019-03-22  1:26 UTC (permalink / raw)
  To: rms; +Cc: bug-gettext, emacs-devel

Richard Stallman wrote:
>     > - The translator, you can assume, can translate sentences and knows
>     >   about the different meanings of words in different context. 
> 
> The Russian translation team for Emacs will not have difficulty using
> russian-masc, russian-nom, and so on.  Being Russian speakers, they
> will understand how these constructs make sense for Russian, once
> they read the documentation for them.

Still, it's essential to consider what the programmers send to the
translators, and what the translators send back in return.

> I don't speak Russian.

Since you speak French perfectly, and we have a French translator on this
list (Jean-Christophe Helary), let me make an example in French.

As far as I understand, for plural handling instead of asking the
translator to translate

  msgid "He bought one nice horse."
  msgid_plural "He bought %d nice horses."

you would send them just the string

  "He bought %d nice horses."

and expect that the translator sends back the string

  "Il acheta %d beau%| cheval%|."

and then have, in the program, code that transforms this to

   "Il acheta un beau cheval."
or "Il acheta %d beaux chevaux."

I claim that

  1) It is not a win for the translator. It is just as easy for the translator
     to produce two strings, than a string with several markers. Speech is
     natural to translators, not markup and grammar.

     Additionally, how will the translator know whether they have done it
     correctly or made a mistake? If you don't want translators to return
     untested translations, there will be the need to integrate the algorithmic
     code into the translation tools (KBabel, Lokalize, Gtranslator, Poedit, etc.).
     How do you want to do that?
     
  2) It is hard to implement:

     - For the singular case, you need to know that "cheval" is masculine.
       Would you like the translator to provide this information, through
       markup such as
         "Il acheta %d<m> beau%| cheval%|."
       or would you like the code to look it up through a dictionary?

     - For the plural case, you need to know that the plural of "*eau" is
       "*eaux" in French (a rule that can be coded), but also that the
       plural of "cheval" is "chevaux" (or vice versa, that the singular
       of "chevaux" is "cheval") - which requires a dictionary lookup.

Bruno




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21 21:03                       ` Clément Pit-Claudel
  2019-03-21 21:21                         ` Jean-Christophe Helary
@ 2019-03-22  8:22                         ` Eli Zaretskii
  2019-03-22 16:10                           ` Clément Pit-Claudel
  1 sibling, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-22  8:22 UTC (permalink / raw)
  To: Clément Pit-Claudel; +Cc: emacs-devel, brandelune, rms, juri

> Cc: brandelune@gmail.com, juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Thu, 21 Mar 2019 17:03:31 -0400
> 
> > Whether we like it or not, it's one of the standard methods of solving
> > these situations.  It might sound somewhat more awkward in some
> > languages than the original wording, but it has other more important
> > advantages.
> 
> I don't understand: what does this change buy us currently, except the awkward wording?

It brings us a step closer to the i18n goal.  A very small step,
admittedly, but step in the right direction nonetheless.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21 21:59                     ` Juri Linkov
@ 2019-03-22  8:22                       ` Eli Zaretskii
  2019-03-23 21:50                         ` Juri Linkov
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-22  8:22 UTC (permalink / raw)
  To: Juri Linkov; +Cc: cpitclaudel, emacs-devel, brandelune, rms

> From: Juri Linkov <juri@linkov.net>
> Cc: Jean-Christophe Helary <brandelune@gmail.com>,  Eli Zaretskii <eliz@gnu.org>,  Richard Stallman <rms@gnu.org>,  emacs-devel@gnu.org
> Date: Thu, 21 Mar 2019 23:59:23 +0200
> 
> Let's use ngettext plurals from now on.

I don't think I understand the practical implications of that.  Could
you please elaborate?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-22  8:22                         ` Eli Zaretskii
@ 2019-03-22 16:10                           ` Clément Pit-Claudel
  2019-03-22 16:35                             ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-22 16:10 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, brandelune, rms, juri

On 2019-03-22 04:22, Eli Zaretskii wrote:
>> Cc: brandelune@gmail.com, juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
>> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
>> Date: Thu, 21 Mar 2019 17:03:31 -0400
>>
>>> Whether we like it or not, it's one of the standard methods of solving
>>> these situations.  It might sound somewhat more awkward in some
>>> languages than the original wording, but it has other more important
>>> advantages.
>>
>> I don't understand: what does this change buy us currently, except the awkward wording?
> 
> It brings us a step closer to the i18n goal.  A very small step,
> admittedly, but step in the right direction nonetheless.

Thanks, that's what puzzles me.  IIUC, we will revert to the previous strings once we have proper translation support in place, right?





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-22 16:35 UTC (permalink / raw)
  To: Clément Pit-Claudel; +Cc: emacs-devel, brandelune, rms, juri

> Cc: brandelune@gmail.com, juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Fri, 22 Mar 2019 12:10:42 -0400
> 
> > It brings us a step closer to the i18n goal.  A very small step,
> > admittedly, but step in the right direction nonetheless.
> 
> Thanks, that's what puzzles me.  IIUC, we will revert to the previous strings once we have proper translation support in place, right?

It isn't clear to me yet.  At least at the time this change was made,
we didn't expect to revert, we thought this form will remain when it
can be translated.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-22 16:35                             ` Eli Zaretskii
@ 2019-03-22 17:16                               ` Clément Pit-Claudel
  2019-03-22 17:35                                 ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-22 17:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, brandelune, rms, juri

On 2019-03-22 12:35, Eli Zaretskii wrote:
>> Cc: brandelune@gmail.com, juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
>> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
>> Date: Fri, 22 Mar 2019 12:10:42 -0400
>>
>>> It brings us a step closer to the i18n goal.  A very small step,
>>> admittedly, but step in the right direction nonetheless.
>>
>> Thanks, that's what puzzles me.  IIUC, we will revert to the previous strings once we have proper translation support in place, right?
> 
> It isn't clear to me yet.  At least at the time this change was made,
> we didn't expect to revert, we thought this form will remain when it
> can be translated.

Oh!  Then I misunderstood.  I thought the idea was that once we have a library that can handle this well, we'd write something like (ngettext "One package installed" "%d packages installed" n), with ngettext picking between both in English and picking the appropriate string in other languages.

Clément.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-22 17:35 UTC (permalink / raw)
  To: Clément Pit-Claudel; +Cc: emacs-devel, brandelune, rms, juri

> Cc: brandelune@gmail.com, juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Fri, 22 Mar 2019 13:16:17 -0400
> 
> > It isn't clear to me yet.  At least at the time this change was made,
> > we didn't expect to revert, we thought this form will remain when it
> > can be translated.
> 
> Oh!  Then I misunderstood.  I thought the idea was that once we have a library that can handle this well, we'd write something like (ngettext "One package installed" "%d packages installed" n), with ngettext picking between both in English and picking the appropriate string in other languages.

Maybe.  ngettext wasn't on the table when this change was made, and
even now I'm not yet sure what the end result will look like.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
       [not found]     ` <E1h6nE3-0000bt-SW-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
  2019-03-21 21:45       ` Juri Linkov
@ 2019-03-22 20:50       ` Chusslove Illich
  1 sibling, 0 replies; 238+ messages in thread
From: Chusslove Illich @ 2019-03-22 20:50 UTC (permalink / raw)
  To: bug-gettext-mXXj517/zsQ, rms-mXXj517/zsQ
  Cc: emacs-devel-mXXj517/zsQ, Juri Linkov

[-- 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 --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-22 17:35                                 ` Eli Zaretskii
@ 2019-03-22 23:17                                   ` Clément Pit-Claudel
  0 siblings, 0 replies; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-22 23:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, brandelune, rms, juri

On 2019-03-22 13:35, Eli Zaretskii wrote:
>> Cc: brandelune@gmail.com, juri@linkov.net, rms@gnu.org, emacs-devel@gnu.org
>> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
>> Date: Fri, 22 Mar 2019 13:16:17 -0400
>>
>>> It isn't clear to me yet.  At least at the time this change was made,
>>> we didn't expect to revert, we thought this form will remain when it
>>> can be translated.
>>
>> Oh!  Then I misunderstood.  I thought the idea was that once we have a library that can handle this well, we'd write something like (ngettext "One package installed" "%d packages installed" n), with ngettext picking between both in English and picking the appropriate string in other languages.
> 
> Maybe.  ngettext wasn't on the table when this change was made, and
> even now I'm not yet sure what the end result will look like.

Got it. Thanks for taking the time to explain!



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-21 21:45       ` Juri Linkov
@ 2019-03-23  2:28         ` Richard Stallman
  2019-03-23  7:55           ` Yuri Khan
       [not found]           ` <E1h7WOF-0006T8-Be-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
  0 siblings, 2 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-23  2:28 UTC (permalink / raw)
  To: Juri Linkov; +Cc: bug-gettext, bruno, emacs-devel

[[[ 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. ]]]

  > The misconception of your proposal is assuming a pure algorithmic
  > inflection whereas actually inflection in Russian is dictionary-based
  > (in addition to algorithms that process words from the dictionary),

Maybe I did.  I see various meanings for "pure algorithmic", so I am
not sure whether I did, or did not, assume the point you have in mind.

  > i.e. to be able to inflect a word you need a large dictionary of all
  > words where each word in the dictionary has at least the following
  > lexical properties:
  > - part of speech
  > - noun grammatical gender: masculine, feminine, neuter
  > - noun animacy: animate, inanimate
  > - inflection type

It sounds like Russian has various declensions, like Latin.
Do I understand right?

If so, it is true that 'russian-nom' would require specification of
declensions.  Maybe `russian-masc' as well.

Are there standard names or codes for the declensions?  In Latin, each
declension has a number.  I think those numbers are standard in
teaching of Latin, so everyone who can read Latin knows those numbers,
and translators would find it natural to use a construct that
specifies the proper declension by number.

We would not have to implement all of them -- only those that
are useful enough to be worth implementing and documenting.
We would tell translators to handle the other declensions, and
the special exceptions, and the irregular plurals, using
lower-level constructs comparable to what gettext does now.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-22  1:26   ` Bruno Haible
@ 2019-03-23  2:29     ` Richard Stallman
  0 siblings, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-23  2:29 UTC (permalink / raw)
  To: Bruno Haible; +Cc: bug-gettext-mXXj517/zsQ, emacs-devel-mXXj517/zsQ

[[[ 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. ]]]

  > and expect that the translator sends back the string

  >   "Il acheta %d beau%| cheval%|."

You are right that modification of the stem creates a complication.
However, in French it would not be difficult to handle.
The processing could recognize when the stem before %| calls for modification
and modify the plural according to the rules.

I think it would not be hard to implement operators french-masc and
french-fem that would handle all regular plurals.

       > - For the plural case, you need to know that the plural of "*eau" is
       >   "*eaux" in French (a rule that can be coded), but also that the
       >   plural of "cheval" is "chevaux" (or vice versa, that the singular
       >   of "chevaux" is "cheval") - which requires a dictionary lookup.

Each of these words has a regular plural.  french-masc would convert
al%| into aux when plural is called for.

For irregular plurals, the translator would give both forms by hand,
working at the gettext level.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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>
       [not found]           ` <E1h7WOF-0006T8-Be-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
  1 sibling, 1 reply; 238+ messages in thread
From: Yuri Khan @ 2019-03-23  7:55 UTC (permalink / raw)
  To: rms; +Cc: Emacs developers, bug-gettext, bruno, Juri Linkov

> It sounds like Russian has various declensions, like Latin.
> Do I understand right?

Yes, Russian has several declension types for nouns, and several
conjugation types for verbs, and knowing the declension type helps one
deduce the ending for each grammatical case and number, most of the
time.

> Are there standard names or codes for the declensions?

At school, they teach us there are three declensions. First declension
for feminine nouns and a few masculine nouns ending in -а and -я;
second declension for masculine nouns ending in a consonant and neuter
nouns ending in -о or -е; and third declension for feminine nouns
ending in -ь.

This is not the complete picture. There are also non-declined nouns,
nouns that decline as if they were adjectives or pronouns, and
exceptions.

> In Latin, each
> declension has a number.  I think those numbers are standard in
> teaching of Latin, so everyone who can read Latin knows those numbers,
> and translators would find it natural to use a construct that
> specifies the proper declension by number.

The difference is that any translation to Latin would be done by a
linguist, while translation to Russian would be done by ordinary
Russian-speaking people. Most of whom do not keep the scientific
details of declensions in their heads any longer than necessary for
their current study and work.

> We would not have to implement all of them -- only those that
> are useful enough to be worth implementing and documenting.

Right, and pretty much the only part of grammar that is useful for
software UI localization is the grammatical number, because that is
the only thing that changes by circumstances outside the control of
the code. It just does not happen that the same message would put a
noun in different cases, or a verb in different tenses, depending on
the value of some expression.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
       [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
  1 sibling, 0 replies; 238+ messages in thread
From: Ineiev @ 2019-03-23 17:50 UTC (permalink / raw)
  To: Yuri Khan
  Cc: Juri Linkov, bug-gettext-mXXj517/zsQ, rms-mXXj517/zsQ,
	Emacs developers

[-- Attachment #1: Type: text/plain, Size: 639 bytes --]

On Sat, Mar 23, 2019 at 02:55:48PM +0700, Yuri Khan wrote:
> Right, and pretty much the only part of grammar that is useful for
> software UI localization is the grammatical number, because that is
> the only thing that changes by circumstances outside the control of
> the code. It just does not happen that the same message would put a
> noun in different cases, or a verb in different tenses, depending on
> the value of some expression.

I encountered constructs like "We use %s %s", where the first arg is
a color ("red", "green", "cool"), and the second arg is a fruit
("apple", "lemon", "horse radish") in singular, dual or plural.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
       [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
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-23 21:48 UTC (permalink / raw)
  To: Richard Stallman; +Cc: bug-gettext-mXXj517/zsQ, emacs-devel-mXXj517/zsQ

> Maybe I did.  I see various meanings for "pure algorithmic", so I am
> not sure whether I did, or did not, assume the point you have in mind.

Sorry, if I incorrectly interpreted your proposal, it was unclear to me
at what stage you planned to expand the special markup such as %|

Doing this at runtime means adding large dictionaries to the distribution 
(together with complex algorithms) to perform a dictionary lookup.
Or alternatively to use an external online API that inflects the words.

But what we could do better than that is to improve po-mode to help
translators to fill all plural forms in the existing format, but to do
this automatically using either a downloaded or online dictionary.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-22  8:22                       ` Eli Zaretskii
@ 2019-03-23 21:50                         ` Juri Linkov
  2019-03-24  3:36                           ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-23 21:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: cpitclaudel, emacs-devel, brandelune, rms

>> Let's use ngettext plurals from now on.
>
> I don't think I understand the practical implications of that.  Could
> you please elaborate?

This means replacing

  (message "Packages to install: %d" n)

with

  (message (ngettext "One package will be installed"
                     "%d packages will be installed" n) n)



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
       [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
  1 sibling, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-24  1:43 UTC (permalink / raw)
  To: Yuri Khan
  Cc: juri-GgPz7P5p7nCsTnJN9+BGXg, bug-gettext-mXXj517/zsQ,
	emacs-devel-mXXj517/zsQ

[[[ 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. ]]]

  > Right, and pretty much the only part of grammar that is useful for
  > software UI localization is the grammatical number, because that is
  > the only thing that changes by circumstances outside the control of
  > the code. It just does not happen that the same message would put a
  > noun in different cases, or a verb in different tenses, depending on
  > the value of some expression.

That's how I thought it would be.  That's why I proposed a construct
russian-nom that would decline a noun that's meant to be in the
nominative case.  There could be other such constructs for other cases,
those that are used often enough in messages to be worth the trouble,
and maybe different ones for adjectives, if that is worth the trouble.

If translators don't find these more convenient, they won't have to
use these.  I don't see any sense in ruling them out without giving
them a try.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-23 21:48             ` Juri Linkov
@ 2019-03-24  1:47               ` Richard Stallman
  0 siblings, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-24  1:47 UTC (permalink / raw)
  To: Juri Linkov; +Cc: bug-gettext, bruno, emacs-devel

[[[ 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. ]]]

  > Sorry, if I incorrectly interpreted your proposal, it was unclear to me
  > at what stage you planned to expand the special markup such as %|

At the stage of translating a message -- when the value of the number
is known.

  > Doing this at runtime means adding large dictionaries to the distribution 
  > (together with complex algorithms) to perform a dictionary lookup.

No dictionary is needed.  It would handle only regular plurals
(following known rules)..

  > Or alternatively to use an external online API that inflects the words.

No, it will be done directly in Lisp code.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-23 21:50                         ` Juri Linkov
@ 2019-03-24  3:36                           ` Eli Zaretskii
  2019-03-24 21:55                             ` Juri Linkov
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-24  3:36 UTC (permalink / raw)
  To: Juri Linkov; +Cc: cpitclaudel, emacs-devel, brandelune, rms

> From: Juri Linkov <juri@linkov.net>
> Cc: cpitclaudel@gmail.com,  brandelune@gmail.com,  rms@gnu.org,  emacs-devel@gnu.org
> Date: Sat, 23 Mar 2019 23:50:53 +0200
> 
> >> Let's use ngettext plurals from now on.
> >
> > I don't think I understand the practical implications of that.  Could
> > you please elaborate?
> 
> This means replacing
> 
>   (message "Packages to install: %d" n)
> 
> with
> 
>   (message (ngettext "One package will be installed"
>                      "%d packages will be installed" n) n)

But since we don't yet have ngettext, we cannot yet use this
paradigm.  I thought by "from now on" you literally meant from now;
did I misunderstand?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-24  3:36                           ` Eli Zaretskii
@ 2019-03-24 21:55                             ` Juri Linkov
  2019-03-24 23:31                               ` Jean-Christophe Helary
                                                 ` (2 more replies)
  0 siblings, 3 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-24 21:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: cpitclaudel, emacs-devel, brandelune, rms

>> >> Let's use ngettext plurals from now on.
>> >
>> > I don't think I understand the practical implications of that.  Could
>> > you please elaborate?
>> 
>> This means replacing
>> 
>>   (message "Packages to install: %d" n)
>> 
>> with
>> 
>>   (message (ngettext "One package will be installed"
>>                      "%d packages will be installed" n) n)
>
> But since we don't yet have ngettext, we cannot yet use this
> paradigm.  I thought by "from now on" you literally meant from now;
> did I misunderstand?

Yes, literally.  After the patch from
http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
is pushed to master, ngettext is available to use for pluralization.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  3:35                               ` Eli Zaretskii
  2019-03-25 10:52                               ` Mattias Engdegård
  2 siblings, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-24 23:31 UTC (permalink / raw)
  To: Emacs developers



> On Mar 25, 2019, at 6:55, Juri Linkov <juri@linkov.net> wrote:
> 
>>>>> Let's use ngettext plurals from now on.
>>>> 
>>>> I don't think I understand the practical implications of that.  Could
>>>> you please elaborate?
>>> 
>>> This means replacing
>>> 
>>>  (message "Packages to install: %d" n)
>>> 
>>> with
>>> 
>>>  (message (ngettext "One package will be installed"
>>>                     "%d packages will be installed" n) n)
>> 
>> But since we don't yet have ngettext, we cannot yet use this
>> paradigm.  I thought by "from now on" you literally meant from now;
>> did I misunderstand?
> 
> Yes, literally.  After the patch from
> http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
> is pushed to master, ngettext is available to use for pluralization.

Why put the patch in subr.el and not in its own i18n related new package ?

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-24 21:55                             ` Juri Linkov
  2019-03-24 23:31                               ` Jean-Christophe Helary
@ 2019-03-25  3:35                               ` Eli Zaretskii
  2019-03-25  9:04                                 ` Jean-Christophe Helary
  2019-03-25 21:02                                 ` Juri Linkov
  2019-03-25 10:52                               ` Mattias Engdegård
  2 siblings, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-25  3:35 UTC (permalink / raw)
  To: Juri Linkov; +Cc: cpitclaudel, emacs-devel, brandelune, rms

> From: Juri Linkov <juri@linkov.net>
> Cc: cpitclaudel@gmail.com,  brandelune@gmail.com,  rms@gnu.org,  emacs-devel@gnu.org
> Date: Sun, 24 Mar 2019 23:55:57 +0200
> 
> > But since we don't yet have ngettext, we cannot yet use this
> > paradigm.  I thought by "from now on" you literally meant from now;
> > did I misunderstand?
> 
> Yes, literally.  After the patch from
> http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
> is pushed to master, ngettext is available to use for pluralization.

That's changing history.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25  3:35                               ` Eli Zaretskii
@ 2019-03-25  9:04                                 ` Jean-Christophe Helary
  2019-03-25 21:02                                 ` Juri Linkov
  1 sibling, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-25  9:04 UTC (permalink / raw)
  To: Emacs developers

[-- Attachment #1: Type: text/plain, Size: 803 bytes --]



> On Mar 25, 2019, at 12:35, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Juri Linkov <juri@linkov.net>
>> Cc: cpitclaudel@gmail.com,  brandelune@gmail.com,  rms@gnu.org,  emacs-devel@gnu.org
>> Date: Sun, 24 Mar 2019 23:55:57 +0200
>> 
>>> But since we don't yet have ngettext, we cannot yet use this
>>> paradigm.  I thought by "from now on" you literally meant from now;
>>> did I misunderstand?
>> 
>> Yes, literally.  After the patch from
>> http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
>> is pushed to master, ngettext is available to use for pluralization.
> 
> That's changing history.

How do we practically use that ?

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune



[-- Attachment #2: Type: text/html, Size: 2835 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-24 21:55                             ` Juri Linkov
  2019-03-24 23:31                               ` Jean-Christophe Helary
  2019-03-25  3:35                               ` Eli Zaretskii
@ 2019-03-25 10:52                               ` Mattias Engdegård
  2019-03-25 15:37                                 ` Eli Zaretskii
  2019-03-25 21:11                                 ` Juri Linkov
  2 siblings, 2 replies; 238+ messages in thread
From: Mattias Engdegård @ 2019-03-25 10:52 UTC (permalink / raw)
  To: Juri Linkov; +Cc: brandelune, Eli Zaretskii, cpitclaudel, rms, emacs-devel

24 mars 2019 kl. 22.55 skrev Juri Linkov <juri@linkov.net>:
> 
> http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
> is pushed to master, ngettext is available to use for pluralization.

That patch exposes some Emacs-specific translation problems:

-                 (cons (format "finished with %d matches found\n" 
grep-num-matches-found)
+                 (cons (format (ngettext "finished with %d match found\n"
+                                         "finished with %d matches found\n"
+                                         grep-num-matches-found)
+                               grep-num-matches-found)

This is fine -- typical i18n code (except that the subject of the sentence is missing, which should go into a comment to translators).

      ;; remove match from grep-regexp-alist before fontifying
      ("^Grep[/a-zA-Z]* started.*"
       (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t))
-     ("^Grep[/a-zA-Z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?matches 
found\\)\\|\\(no matches found\\)\\).*"
+     ("^Grep[/a-zA-Z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? 
found\\)\\|\\(no matches found\\)\\).*"

Since it is not uncommon in Emacs to pattern-match on generated text, either the translator needs to understand regexps well or the code must be restructured to avoid that kind of matching, perhaps by using text properties. Besides, translating regexp strings precludes the use of modern regexp notations like rx, since gettext is string-oriented.

Of course the patch was just a proof-of-concept and not intended as actual code. Please forgive me for using it to make a point.

This is also not an argument against using gettext. Quite the contrary; it's the obvious way to go if i18n is to be undertaken at all.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 10:52                               ` Mattias Engdegård
@ 2019-03-25 15:37                                 ` Eli Zaretskii
  2019-03-25 21:11                                 ` Juri Linkov
  1 sibling, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-25 15:37 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: cpitclaudel, emacs-devel, brandelune, rms, juri

> From: Mattias Engdegård <mattiase@acm.org>
> Date: Mon, 25 Mar 2019 11:52:45 +0100
> Cc: Eli Zaretskii <eliz@gnu.org>, cpitclaudel@gmail.com, emacs-devel@gnu.org,
>         brandelune@gmail.com, rms@gnu.org
> 
> Of course the patch was just a proof-of-concept and not intended as actual code.

It's not proof-of-concept, it's an actual patch that was committed
yesterday night.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-25 21:02 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: cpitclaudel, emacs-devel, brandelune, rms

>> > But since we don't yet have ngettext, we cannot yet use this
>> > paradigm.  I thought by "from now on" you literally meant from now;
>> > did I misunderstand?
>>
>> Yes, literally.  After the patch from
>> http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00586.html
>> is pushed to master, ngettext is available to use for pluralization.
>
> That's changing history.

When you asked to read past discussions, I did it, and among all opinions
the most encouraging were the wise words of François Pinard:

  "Yet, when it is affordable to do so, and to spare the overall effort,
   it is often a good thing to aim in directions which have less chance to
   lead into dead ends, from which we might later have to backtrack from.
   Yet, dead ends are not always technical, so sometimes, not always, dead
   ends might be more fruitful than no road at all.  It is surely a fine art,
   being able to choose the best roads, considering all issues.

   My opinion is, when we are lacking of volunteer time, that the best road is
   the one having the least steps in it, and this often means that backtracking
   should be avoided.  Best is trying to do things the right way, even if not
   everything gets done at once.  So steps accumulate constructively over time."

I hope that starting with a small step of adding ngettext to provide
the correct plurals for English words would lead in the right direction
while avoiding the danger of backtracking from dead ends.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-25 21:11 UTC (permalink / raw)
  To: Mattias Engdegård
  Cc: brandelune, Eli Zaretskii, cpitclaudel, rms, emacs-devel

> +                 (cons (format (ngettext "finished with %d match found\n"
> +                                         "finished with %d matches found\n"
> +                                         grep-num-matches-found)
> +                               grep-num-matches-found)
>
>       ("^Grep[/a-zA-Z]* started.*"
>        (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t))
> -     ("^Grep[/a-zA-Z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?matches 
> found\\)\\|\\(no matches found\\)\\).*"
> +     ("^Grep[/a-zA-Z]* finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? 
> found\\)\\|\\(no matches found\\)\\).*"
>
> Since it is not uncommon in Emacs to pattern-match on generated text,
> either the translator needs to understand regexps well or the code
> must be restructured to avoid that kind of matching, perhaps by using
> text properties. Besides, translating regexp strings precludes the use
> of modern regexp notations like rx, since gettext is string-oriented.

Is it possible to generate a regexp from ngettext arguments?
For example, given the same arguments and calling a hypothetical
function ‘rx-ngettext’:

  (rx-ngettext "finished with %d match found\n"
               "finished with %d matches found\n")

to generate a regexp like:

  "finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? found\\)"



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-24 23:31                               ` Jean-Christophe Helary
@ 2019-03-25 21:32                                 ` Juri Linkov
  2019-03-25 22:31                                   ` Paul Eggert
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-25 21:32 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: Emacs developers

> Why put the patch in subr.el and not in its own i18n related new package ?

I don't know where to put i18n related code, so since ngettext should
have C calls anyway, I moved it to editfns.c near the function ‘message’
where it still just returns the correct plurals without doing any translation.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 21:11                                 ` Juri Linkov
@ 2019-03-25 22:05                                   ` Mattias Engdegård
  2019-03-27 21:22                                     ` Juri Linkov
  0 siblings, 1 reply; 238+ messages in thread
From: Mattias Engdegård @ 2019-03-25 22:05 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Eli Zaretskii, emacs-devel, cpitclaudel, brandelune, rms

25 mars 2019 kl. 22.11 skrev Juri Linkov <juri@linkov.net>:
> 
> Is it possible to generate a regexp from ngettext arguments?
> For example, given the same arguments and calling a hypothetical
> function ‘rx-ngettext’:
> 
>  (rx-ngettext "finished with %d match found\n"
>               "finished with %d matches found\n")
> 
> to generate a regexp like:
> 
>  "finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? found\\)"

Trivially so by generating an or-pattern: "singular text\\|plural text". Anything better is a matter of optimisation, basically a diff algorithm (or just prefix and suffix merging).

Is it practical, though? For %s, we would need to generate a match-anything subexpression, even though the argument is much more constrained in practice.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 21:32                                 ` Juri Linkov
@ 2019-03-25 22:31                                   ` Paul Eggert
  2019-03-26 16:11                                     ` Eli Zaretskii
  2019-03-26 23:16                                     ` Juri Linkov
  0 siblings, 2 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-25 22:31 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Jean-Christophe Helary, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 1795 bytes --]

On 3/25/19 2:32 PM, Juri Linkov wrote:
> I don't know where to put i18n related code, so since ngettext should
> have C calls anyway, I moved it to editfns.c near the function ‘message’
> where it still just returns the correct plurals without doing any translation.

That stub had some problems:

1. It lacked documentation in the Elisp manual. Important changes like
this should be documented -- to some extent the documentation is even
more important than the code. Can you write something?

2. While you're thinking about (1) here are some other questions. How
will ngettext determine the message catalog? Is the catalog visible to
users as a global variable, or as a hidden part of the global state, or
is it something explicit? How will catalogs from multiple packages be
used? How would a multi-lingual application work in Emacs if the message
catalog is part of global state? This seems to be a crucial issue, I'd
say. For example, should Emacs export dcngettext to Lisp code, instead
of just plain ngettext? (Emacs could then define ngettext in terms of
dcngettext.)

3. User C code is not supposed to inspect the _LIBC macro; that's for
glibc internal use. In Emacs _LIBC should be used only with code shared
with glibc, and we should assume _LIBC is never defined when files are
compiled for Emacs.

4. The stub doesn't work with bignums.

5. When calling the C-level ngettext, strings are not properly recoded.

I fixed (3) and (4), and temporarily worked around (5), by installing
the attached patch. To do a better job with (2) and (5) please see the
gettext manual's instructions for package maintainers, here:

https://www.gnu.org/software/gettext/manual/gettext.html#Maintainers

To my mind (1) and (2) are the most-pressing problems.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Port-recent-ngettext-stub-to-non-glibc.patch --]
[-- Type: text/x-patch; name="0001-Port-recent-ngettext-stub-to-non-glibc.patch", Size: 2850 bytes --]

From a361c54b8339ad79f65e924c4a1f7bbcdb1859e2 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Mon, 25 Mar 2019 15:20:20 -0700
Subject: [PATCH] Port recent ngettext stub to non-glibc
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* src/editfns.c: Don’t try to call glibc ngettext;
we’re not ready for that yet.
(Fngettext): Do not restrict integer arguments to fixnums.
Improve doc string a bit.
---
 src/editfns.c | 34 +++++++++-------------------------
 1 file changed, 9 insertions(+), 25 deletions(-)

diff --git a/src/editfns.c b/src/editfns.c
index ab48cdb6fd..bfffadc733 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -53,12 +53,6 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "window.h"
 #include "blockinput.h"
 
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "gettext.h"
-#endif
-
 static void update_buffer_properties (ptrdiff_t, ptrdiff_t);
 static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool);
 
@@ -2845,30 +2839,20 @@ usage: (save-restriction &rest BODY)  */)
 /* i18n (internationalization).  */
 
 DEFUN ("ngettext", Fngettext, Sngettext, 3, 3, 0,
-       doc: /* Return the plural form of the translation of the string.
-This function is similar to the `gettext' function as it finds the message
-catalogs in the same way.  But it takes two extra arguments.  The MSGID
-parameter must contain the singular form of the string to be converted.
-It is also used as the key for the search in the catalog.
-The MSGID_PLURAL parameter is the plural form.  The parameter N is used
-to determine the plural form.  If no message catalog is found MSGID is
-returned if N is equal to 1, otherwise MSGID_PLURAL.  */)
+       doc: /* Return the translation of MSGID (plural MSGID_PLURAL) depending on N.
+MSGID is the singular form of the string to be converted;
+use it as the key for the search in the translation catalog.
+MSGID_PLURAL is the plural form.  Use N to select the proper translation.
+If no message catalog is found, MSGID is returned if N is equal to 1,
+otherwise MSGID_PLURAL.  */)
   (Lisp_Object msgid, Lisp_Object msgid_plural, Lisp_Object n)
 {
   CHECK_STRING (msgid);
   CHECK_STRING (msgid_plural);
-  CHECK_FIXNUM (n);
+  CHECK_INTEGER (n);
 
-#ifdef _LIBGETTEXT_H
-  return build_string (ngettext (SSDATA (msgid),
-                                 SSDATA (msgid_plural),
-                                 XFIXNUM (n)));
-#else
-  if (XFIXNUM (n) == 1)
-    return msgid;
-  else
-    return msgid_plural;
-#endif
+  /* Placeholder implementation until we get our act together.  */
+  return EQ (n, make_fixnum (1)) ? msgid : msgid_plural;
 }
 \f
 DEFUN ("message", Fmessage, Smessage, 1, MANY, 0,
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 21:02                                 ` Juri Linkov
@ 2019-03-26  3:27                                   ` Eli Zaretskii
  2019-03-27 23:06                                     ` Richard Stallman
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-26  3:27 UTC (permalink / raw)
  To: Juri Linkov; +Cc: cpitclaudel, emacs-devel, brandelune, rms

> From: Juri Linkov <juri@linkov.net>
> Cc: cpitclaudel@gmail.com,  brandelune@gmail.com,  rms@gnu.org,  emacs-devel@gnu.org
> Date: Mon, 25 Mar 2019 23:02:59 +0200
> 
> I hope that starting with a small step of adding ngettext to provide
> the correct plurals for English words would lead in the right direction
> while avoiding the danger of backtracking from dead ends.

That's not what I meant.  I asked a question, and you replied as if
the commit done yesterday already existed before I asked the question.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 22:31                                   ` Paul Eggert
@ 2019-03-26 16:11                                     ` Eli Zaretskii
  2019-03-26 16:22                                       ` Stefan Monnier
                                                         ` (2 more replies)
  2019-03-26 23:16                                     ` Juri Linkov
  1 sibling, 3 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-26 16:11 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, brandelune, juri

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Mon, 25 Mar 2019 15:31:14 -0700
> Cc: Jean-Christophe Helary <brandelune@gmail.com>,
> 	Emacs developers <emacs-devel@gnu.org>
> 
> 2. While you're thinking about (1) here are some other questions. How
> will ngettext determine the message catalog? Is the catalog visible to
> users as a global variable, or as a hidden part of the global state, or
> is it something explicit? How will catalogs from multiple packages be
> used? How would a multi-lingual application work in Emacs if the message
> catalog is part of global state? This seems to be a crucial issue, I'd
> say. For example, should Emacs export dcngettext to Lisp code, instead
> of just plain ngettext? (Emacs could then define ngettext in terms of
> dcngettext.)

Do we have any reasons not to follow the CLISP example of factoring
these issues?

> 5. When calling the C-level ngettext, strings are not properly recoded.

Did you mean decoding the translated string that ngettext returns?  If
so, we will need some way of getting at the encoding of the strings in
the catalog, I think.  Or will we mandate that Emacs catalogs need
always to be in UTF-8 encoding?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  2:34                                       ` Jean-Christophe Helary
  2 siblings, 1 reply; 238+ messages in thread
From: Stefan Monnier @ 2019-03-26 16:22 UTC (permalink / raw)
  To: emacs-devel

> Did you mean decoding the translated string that ngettext returns?  If
> so, we will need some way of getting at the encoding of the strings in
> the catalog, I think.  Or will we mandate that Emacs catalogs need
> always to be in UTF-8 encoding?

Mandating `utf-8-emacs` would make things simpler.


        Stefan




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-26 16:22                                       ` Stefan Monnier
@ 2019-03-26 16:55                                         ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-26 16:55 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Tue, 26 Mar 2019 12:22:52 -0400
> 
> > Did you mean decoding the translated string that ngettext returns?  If
> > so, we will need some way of getting at the encoding of the strings in
> > the catalog, I think.  Or will we mandate that Emacs catalogs need
> > always to be in UTF-8 encoding?
> 
> Mandating `utf-8-emacs` would make things simpler.

If the translators won't mind, sure.

Or maybe we will recode into UTF-8 before importing those catalogs
that aren't.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-26 16:11                                     ` Eli Zaretskii
  2019-03-26 16:22                                       ` Stefan Monnier
@ 2019-03-26 22:35                                       ` Paul Eggert
  2019-03-27  3:43                                         ` Eli Zaretskii
  2019-03-27  2:34                                       ` Jean-Christophe Helary
  2 siblings, 1 reply; 238+ messages in thread
From: Paul Eggert @ 2019-03-26 22:35 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, brandelune, juri

On 3/26/19 9:11 AM, Eli Zaretskii wrote:
>> 2. While you're thinking about (1) here are some other questions. How
>> will ngettext determine the message catalog? Is the catalog visible to
>> users as a global variable, or as a hidden part of the global state, or
>> is it something explicit? How will catalogs from multiple packages be
>> used? How would a multi-lingual application work in Emacs if the message
>> catalog is part of global state? This seems to be a crucial issue, I'd
>> say. For example, should Emacs export dcngettext to Lisp code, instead
>> of just plain ngettext? (Emacs could then define ngettext in terms of
>> dcngettext.)
> Do we have any reasons not to follow the CLISP example of factoring
> these issues?

That's the first I've heard that CLISP does gettext. I looked into it,
and it's a reasonably simple binding, which means that the language is
part of the global state (Emacs would not easily be multilingual) and
that each package can have its own catalog and can specify that catalog
as a trailing argument to gettext (presumably the default catalog would
be for Emacs core). This should be good enough, though it will be a bit
of a hassle for non-core code to keep track of the catalog.


> will we mandate that Emacs catalogs need
> always to be in UTF-8 encoding?

Yes, that makes sense.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 22:31                                   ` Paul Eggert
  2019-03-26 16:11                                     ` Eli Zaretskii
@ 2019-03-26 23:16                                     ` Juri Linkov
  2019-03-27  1:35                                       ` Paul Eggert
  2019-04-24  6:39                                       ` Jean-Christophe Helary
  1 sibling, 2 replies; 238+ messages in thread
From: Juri Linkov @ 2019-03-26 23:16 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Jean-Christophe Helary, Emacs developers

>> I don't know where to put i18n related code, so since ngettext should
>> have C calls anyway, I moved it to editfns.c near the function ‘message’
>> where it still just returns the correct plurals without doing any translation.
>
> That stub had some problems:
>
> 1. It lacked documentation in the Elisp manual. Important changes like
> this should be documented -- to some extent the documentation is even
> more important than the code. Can you write something?

I'll start writing documentation.  Is it allowed to make
references from the Elisp manual to the Gettext Info manual?
I see in (info "(gettext) elisp-format") a reference back to
the Elisp manual is a web link, not an Info reference.

> 2. While you're thinking about (1) here are some other questions. How
> will ngettext determine the message catalog? Is the catalog visible to
> users as a global variable, or as a hidden part of the global state, or
> is it something explicit? How will catalogs from multiple packages be
> used? How would a multi-lingual application work in Emacs if the message
> catalog is part of global state? This seems to be a crucial issue, I'd
> say. For example, should Emacs export dcngettext to Lisp code, instead
> of just plain ngettext? (Emacs could then define ngettext in terms of
> dcngettext.)

It seems most of these needs could be covered by adding two optional
arguments DOMAIN and CATEGORY to ngettext (where the default domain
"emacs" will be hard-coded).

As a convenience not to require a package to add its domain to every
ngettext call, maybe when something like 'defdomain' is declared at the
beginning of the package, its value should affect the domain within
the package scope.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-26 23:16                                     ` Juri Linkov
@ 2019-03-27  1:35                                       ` Paul Eggert
  2019-04-24  6:39                                       ` Jean-Christophe Helary
  1 sibling, 0 replies; 238+ messages in thread
From: Paul Eggert @ 2019-03-27  1:35 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Jean-Christophe Helary, Emacs developers

On 3/26/19 4:16 PM, Juri Linkov wrote:

> I'll start writing documentation. Is it allowed to make references
> from the Elisp manual to the Gettext Info manual? I see in (info
> "(gettext) elisp-format") a reference back to the Elisp manual is a
> web link, not an Info reference.
>
Thanks for taking this on. Yes, you can do cross-references; e.g.,
files.texi has this:

@xref{File permissions,,, coreutils, The @sc{gnu} @code{Coreutils}
Manual}


> It seems most of these needs could be covered by adding two optional
> arguments DOMAIN and CATEGORY to ngettext (where the default domain
> "emacs" will be hard-coded).
>
This appears to be what CLISP does; see:

https://sourceforge.net/p/clisp/clisp/ci/default/tree/modules/i18n/i18n.lisp

https://clisp.sourceforge.io/impnotes.html#i18n-mod

> As a convenience not to require a package to add its domain to every
> ngettext call, maybe when something like 'defdomain' is declared at
> the beginning of the package, its value should affect the domain
> within the package scope.
>
Would this be done statically or dynamically? Preferably the former but
I don't exactly see how it would work, and even dynamically the details
are not obvious to me.

For example, would you have to do something like the following?

(define mymodule--ngettext (n sing-msgid pl-msgid) (ngettext n
sing-msgid pl-msgid "mymodule"))

(defun report-items (n) (message (mymodule--ngettext n "%d item" "%d
items") n))
(defun report-keystrokes (n) (message (mymodule--ngetext n "%d keystroke
received." "%d keystrokes received.") n))

Something like this would work, but it looks pretty annoying....




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-26 16:11                                     ` Eli Zaretskii
  2019-03-26 16:22                                       ` Stefan Monnier
  2019-03-26 22:35                                       ` Paul Eggert
@ 2019-03-27  2:34                                       ` Jean-Christophe Helary
  2 siblings, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-03-27  2:34 UTC (permalink / raw)
  To: Emacs developers



> On Mar 27, 2019, at 1:11, Eli Zaretskii <eliz@gnu.org> wrote:

> Or will we mandate that Emacs catalogs need
> always to be in UTF-8 encoding?

Please.

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-26 22:35                                       ` Paul Eggert
@ 2019-03-27  3:43                                         ` Eli Zaretskii
  2019-03-28 14:56                                           ` Clément Pit-Claudel
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-27  3:43 UTC (permalink / raw)
  To: Paul Eggert; +Cc: emacs-devel, brandelune, juri

> Cc: juri@linkov.net, brandelune@gmail.com, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Tue, 26 Mar 2019 15:35:22 -0700
> 
> > Do we have any reasons not to follow the CLISP example of factoring
> > these issues?
> 
> That's the first I've heard that CLISP does gettext.

I learned that from post by Bruno here up-thread.

> I looked into it, and it's a reasonably simple binding, which means
> that the language is part of the global state (Emacs would not
> easily be multilingual)

We could offer the language as another optional argument.  I'm not
sure we need to allow control of the CATEGORY (for choosing the LC_*
category), so we could replace that with the language.  Or we could
keep CATEGORY for compatibility and just add LANGUAGE.

> and that each package can have its own catalog and can specify that
> catalog as a trailing argument to gettext (presumably the default
> catalog would be for Emacs core). This should be good enough, though
> it will be a bit of a hassle for non-core code to keep track of the
> catalog.

If we want some automatic way of changing the domain when a function
from a package is called, we need to develop the infrastructure for
that.  But that could wait for later, I think.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-25 22:05                                   ` Mattias Engdegård
@ 2019-03-27 21:22                                     ` Juri Linkov
  2019-03-28 11:03                                       ` Mattias Engdegård
  0 siblings, 1 reply; 238+ messages in thread
From: Juri Linkov @ 2019-03-27 21:22 UTC (permalink / raw)
  To: Mattias Engdegård
  Cc: Eli Zaretskii, emacs-devel, cpitclaudel, brandelune, rms

>> Is it possible to generate a regexp from ngettext arguments?
>> For example, given the same arguments and calling a hypothetical
>> function ‘rx-ngettext’:
>>
>>  (rx-ngettext "finished with %d match found\n"
>>               "finished with %d matches found\n")
>>
>> to generate a regexp like:
>>
>>  "finished with \\(?:\\(\\(?:[0-9]+ \\)?match\\(?:es\\)? found\\)"
>
> Trivially so by generating an or-pattern: "singular text\\|plural text".
> Anything better is a matter of optimisation, basically a diff algorithm
> (or just prefix and suffix merging).
>
> Is it practical, though? For %s, we would need to generate a match-anything
> subexpression, even though the argument is much more constrained in practice.

I tried ‘regexp-opt’ and it generates a ready-to-use regexp:

  (replace-regexp-in-string
   "%d" "\\\\([0-9]+\\\\)"
   (regexp-opt '("finished with %d match found"
                 "finished with %d matches found"
                 "finished with no matches found")))

  ⇒ "\\(?:finished with \\(?:\\(?:\\([0-9]+\\) match\\(?:es\\)?\\|no matches\\) found\\)\\)"



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-26  3:27                                   ` Eli Zaretskii
@ 2019-03-27 23:06                                     ` Richard Stallman
  0 siblings, 0 replies; 238+ messages in thread
From: Richard Stallman @ 2019-03-27 23:06 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: cpitclaudel, emacs-devel, brandelune, juri

[[[ 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. ]]]

  > > I hope that starting with a small step of adding ngettext to provide
  > > the correct plurals for English words would lead in the right direction
  > > while avoiding the danger of backtracking from dead ends.

  > That's not what I meant.  I asked a question, and you replied as if
  > the commit done yesterday already existed before I asked the question.

It sounds like a minor miscommunication.  A short private conversation
might enable you to set it straight.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-27 21:22                                     ` Juri Linkov
@ 2019-03-28 11:03                                       ` Mattias Engdegård
  0 siblings, 0 replies; 238+ messages in thread
From: Mattias Engdegård @ 2019-03-28 11:03 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Emacs developers

27 mars 2019 kl. 22.22 skrev Juri Linkov <juri@linkov.net>:
> 
> I tried ‘regexp-opt’ and it generates a ready-to-use regexp:
> 
>  (replace-regexp-in-string
>   "%d" "\\\\([0-9]+\\\\)"
>   (regexp-opt '("finished with %d match found"
>                 "finished with %d matches found"
>                 "finished with no matches found")))
> 
>  ⇒ "\\(?:finished with \\(?:\\(?:\\([0-9]+\\) match\\(?:es\\)?\\|no matches\\) found\\)\\)"

Well now. There is no guarantee that regexp-opt won't split the %d. Format strings must be parsed left-to-right for correctness¹. I'm still skeptical, but if you really want to give this a try, then first segment the format string:

"Today %d little piggies built %03o houses and said '%s'."
"Today %d little piggy built %o house and said '%s'."
=>
("Today " ?d " little piggies built " ?o " houses and said '" ?s "'.")
("Today " ?d " little piggy built " ?o " house and said '" ?s "'.")

leaving the format placeholders as atomic entities (here shown as characters, but you may need more information there).
Then run your fav diff algo on the result. Most important to performance is prefix merging; anything else is just to make the regexp smaller.

Here, prefix and suffix merging would leave you with (still in abstract form)

("Today " ?d " little pigg"
 (("ies built " ?o " houses")
  ("y built " ?o " house"))
 " and said '" ?s "'.")

From there you can either recursively try to find more common subsequences, or call it a day and render it into a regexp:

"Today -?[0-9]+ little pigg\\(?:ies built -?[0-7]+ houses\\|y built -?[0-7]+ house\\) and said '\\(?:.\\|\n\\)*'."

All this will need to be done at run-time, since it is run on translated strings.

¹ To match format parameters, try something like
  (rx "%"
      (opt (1+ digit) "$")
      (0+ digit)
      (opt "." (0+ digit))
      (any "%sdioxXefgcS"))




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-27  3:43                                         ` Eli Zaretskii
@ 2019-03-28 14:56                                           ` Clément Pit-Claudel
  2019-03-28 15:52                                             ` Eli Zaretskii
  0 siblings, 1 reply; 238+ messages in thread
From: Clément Pit-Claudel @ 2019-03-28 14:56 UTC (permalink / raw)
  To: emacs-devel

On 2019-03-26 23:43, Eli Zaretskii wrote:
> If we want some automatic way of changing the domain when a function
> from a package is called, we need to develop the infrastructure for
> that.  But that could wait for later, I think.

I expect I'd define a foo-ngettext macro in each `foo' package expanding to ngettext with the appropriate group argument.  If there are multiple functions (gettext, ngettext, etc), maybe a single macro defining all foo-* variants at once would be nice.

Clément.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-03-28 14:56                                           ` Clément Pit-Claudel
@ 2019-03-28 15:52                                             ` Eli Zaretskii
  0 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2019-03-28 15:52 UTC (permalink / raw)
  To: Clément Pit-Claudel; +Cc: emacs-devel

> From: Clément Pit-Claudel <cpitclaudel@gmail.com>
> Date: Thu, 28 Mar 2019 10:56:44 -0400
> 
> On 2019-03-26 23:43, Eli Zaretskii wrote:
> > If we want some automatic way of changing the domain when a function
> > from a package is called, we need to develop the infrastructure for
> > that.  But that could wait for later, I think.
> 
> I expect I'd define a foo-ngettext macro in each `foo' package expanding to ngettext with the appropriate group argument.  If there are multiple functions (gettext, ngettext, etc), maybe a single macro defining all foo-* variants at once would be nice.

I really hope we could come up with something more elegant.  And
besides, your suggestion doesn't handle calls from Lisp packages to
core APIs, including primitives and modules.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2019-04-24  6:39 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Paul Eggert, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 2166 bytes --]

So, where do we go from here now ?

Juri, have you written documentation ? Do you want help ?

Jean-Christophe

> On Mar 27, 2019, at 8:16, Juri Linkov <juri@linkov.net <mailto:juri@linkov.net>> wrote:
> 
>>> I don't know where to put i18n related code, so since ngettext should
>>> have C calls anyway, I moved it to editfns.c near the function ‘message’
>>> where it still just returns the correct plurals without doing any translation.
>> 
>> That stub had some problems:
>> 
>> 1. It lacked documentation in the Elisp manual. Important changes like
>> this should be documented -- to some extent the documentation is even
>> more important than the code. Can you write something?
> 
> I'll start writing documentation.  Is it allowed to make
> references from the Elisp manual to the Gettext Info manual?
> I see in (info "(gettext) elisp-format") a reference back to
> the Elisp manual is a web link, not an Info reference.
> 
>> 2. While you're thinking about (1) here are some other questions. How
>> will ngettext determine the message catalog? Is the catalog visible to
>> users as a global variable, or as a hidden part of the global state, or
>> is it something explicit? How will catalogs from multiple packages be
>> used? How would a multi-lingual application work in Emacs if the message
>> catalog is part of global state? This seems to be a crucial issue, I'd
>> say. For example, should Emacs export dcngettext to Lisp code, instead
>> of just plain ngettext? (Emacs could then define ngettext in terms of
>> dcngettext.)
> 
> It seems most of these needs could be covered by adding two optional
> arguments DOMAIN and CATEGORY to ngettext (where the default domain
> "emacs" will be hard-coded).
> 
> As a convenience not to require a package to add its domain to every
> ngettext call, maybe when something like 'defdomain' is declared at the
> beginning of the package, its value should affect the domain within
> the package scope.

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com <http://mac4translators.blogspot.com/> @brandelune



[-- Attachment #2: Type: text/html, Size: 4267 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2019-04-24  6:39                                       ` Jean-Christophe Helary
@ 2019-04-24 20:18                                         ` Juri Linkov
  0 siblings, 0 replies; 238+ messages in thread
From: Juri Linkov @ 2019-04-24 20:18 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: Paul Eggert, Emacs developers

> So, where do we go from here now ?
>
> Juri, have you written documentation ?

It's still WIP.  First I looked how i18n is implemented in XEmacs,
and discovered that whereas the interface is documented, it's
not fully functional.  What is worse, it's quite ugly.
So I turned onto a nicer interface in CLISP that could be
used as a basis of gettext interface in Emacs Lisp.

> Do you want help ?

Help is needed to install the standard gettext infrastructure
using gettextize.  Help is expected from someone who has more
experience in applying gettext to other projects.

Once the default gettext infrastructure is installed,
I could help in adapting gettext to Emacs.

Meanwhile, currently I'm replacing dired-plural-s with ngettext
in bug#35287.  It's not without problems: one problematic place
is in dired-do-kill-lines:

  (defun dired-do-kill-lines (&optional arg fmt)
    ...
    (let ((count 0))
      (setq count (1+ count))
      (or (equal "" fmt)
          (message (or fmt "Killed %d line%s.") count (dired-plural-s count)))
      count)

  (defun dired-omit-expunge (&optional regexp)
    ...
    (setq count (dired-do-kill-lines
                 nil
                 (if dired-omit-verbose "Omitted %d line%s." "")))

The format string can't be just replaced in dired-do-kill-lines with
something like

  (ngettext "Killed %d line." "Killed %d lines." count)

because it can be called with a format string from dired-omit-expunge,
but also dired-omit-expunge has no access to the variable 'count'.

There are more such marginal cases, but eventually they all
have to resolved somehow.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
@ 2021-07-17  9:27 Narendra Joshi
  2021-07-17  9:36 ` Thibaut Verron
  2021-07-17  9:53 ` Eli Zaretskii
  0 siblings, 2 replies; 238+ messages in thread
From: Narendra Joshi @ 2021-07-17  9:27 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list

Hi everyone,

Recently I was asked if Emacs can be configured to use a different language
in its interface, e.g. menu bars, org mode agenda, days of the week, etc. I
tried finding out if it is possible but only found documentation on
language environments. Are there translations for Emacs in other languages?


Best regards,
Narendra


^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17  9:27 Emacs i18n Narendra Joshi
@ 2021-07-17  9:36 ` Thibaut Verron
  2021-07-17  9:53 ` Eli Zaretskii
  1 sibling, 0 replies; 238+ messages in thread
From: Thibaut Verron @ 2021-07-17  9:36 UTC (permalink / raw)
  To: Narendra Joshi; +Cc: Help Gnu Emacs mailing list

Hi,

The days of the week in org timestamp cookies try to follow your
locale settings.

I'm not aware of any other part of Emacs which would be localized.

Best wishes,
Thibaut

Le sam. 17 juil. 2021 à 11:27, Narendra Joshi <narendraj9@gmail.com> a écrit :
>
> Hi everyone,
>
> Recently I was asked if Emacs can be configured to use a different language
> in its interface, e.g. menu bars, org mode agenda, days of the week, etc. I
> tried finding out if it is possible but only found documentation on
> language environments. Are there translations for Emacs in other languages?
>
>
> Best regards,
> Narendra



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17  9:27 Emacs i18n 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 20:06   ` Alexandre Garreau
  1 sibling, 2 replies; 238+ messages in thread
From: Eli Zaretskii @ 2021-07-17  9:53 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Narendra Joshi <narendraj9@gmail.com>
> Date: Sat, 17 Jul 2021 11:27:14 +0200
> 
> Are there translations for Emacs in other languages?

No, not at this time.  Translating the Emacs UI is a non-trivial
project, as past discussions have indicated, for several good reasons.
No one started to work on that seriously, AFAIK.

We do have the ngettext function, but (a) it has limited scope of only
supporting localization of echo-area and minibuffer messages; (b) it
is called only in a small number of places; and (c) we don't yet have
message catalogs, nor have we figured out how to distribute them in a
way that would allow a package to come with its own message catalog.

(Btw, "translation" in the UI context are not generally referred to as
"i18n", but as "localization", "l10n".)



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17  9:53 ` Eli Zaretskii
@ 2021-07-17 13:32   ` mrf
  2021-07-17 14:01     ` Eli Zaretskii
  2021-07-17 20:06   ` Alexandre Garreau
  1 sibling, 1 reply; 238+ messages in thread
From: mrf @ 2021-07-17 13:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: help-gnu-emacs


Eli Zaretskii writes:

> No, not at this time.  Translating the Emacs UI is a non-trivial
> project, as past discussions have indicated, for several good reasons.
> No one started to work on that seriously, AFAIK.
>
> We do have the ngettext function, but (a) it has limited scope of only
> supporting localization of echo-area and minibuffer messages; (b) it
> is called only in a small number of places; and (c) we don't yet have
> message catalogs, nor have we figured out how to distribute them in a
> way that would allow a package to come with its own message catalog.


Is UI Strings in C code fully translatable (especially in gtk UI
although I think they are fewer than elisp ones)?

Do you talk about elisp part of code when you say It is limited?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 13:32   ` mrf
@ 2021-07-17 14:01     ` Eli Zaretskii
  2021-07-17 20:00       ` Alexandre Garreau
  0 siblings, 1 reply; 238+ messages in thread
From: Eli Zaretskii @ 2021-07-17 14:01 UTC (permalink / raw)
  To: help-gnu-emacs

> From: mrf <joinlaw@cock.li>
> Cc: help-gnu-emacs@gnu.org
> Date: Sat, 17 Jul 2021 16:32:08 +0300
> 
> Is UI Strings in C code fully translatable

No.  But those are indeed the minority; the vast majority is in Lisp.

> Do you talk about elisp part of code when you say It is limited?

It doesn't matter.  What does matter is that the echo-area messages,
whether they come from C or Lisp, are a small part of the text that
Emacs presents to the user as part of the UI.  We have special buffers
(like *Help* and *Apropos*) where we show information which won't fit
the echo-area, we have menus and dialogs, we have tooltips, etc. etc.
The names of commands and user options are all in English, and those
names have mnemonic value.

Let's face it: the classic i10n framework doesn't really work for a
program such as Emacs, which interacts with users via so many
different means.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
                           ` (2 more replies)
  0 siblings, 3 replies; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-17 20:00 UTC (permalink / raw)
  To: help-gnu-emacs

Le samedi 17 juillet 2021, 16:01:11 CEST Eli Zaretskii a écrit :
> > From: mrf <joinlaw@cock.li>
> > Cc: help-gnu-emacs@gnu.org
> > Date: Sat, 17 Jul 2021 16:32:08 +0300
> > 
> > Is UI Strings in C code fully translatable
> 
> No.  But those are indeed the minority; the vast majority is in Lisp.
> 
> > Do you talk about elisp part of code when you say It is limited?
> 
> It doesn't matter.  What does matter is that the echo-area messages,
> whether they come from C or Lisp, are a small part of the text that
> Emacs presents to the user as part of the UI.  We have special buffers
> (like *Help* and *Apropos*) where we show information which won't fit
> the echo-area, we have menus and dialogs, we have tooltips, etc. etc.
> The names of commands and user options are all in English, and those
> names have mnemonic value.
> 
> Let's face it: the classic i10n framework doesn't really work for a
> program such as Emacs, which interacts with users via so many
> different means.

Translating emacs would require to translate many identifiers, it would 
actually amount to translate a programming language, which has very rarely 
been done.  It usually only has been done through keyword, and translation 
of standard library, and mostly for education purposes, while any other 
use than educational is weirdly considered to be “professional” (while 
education wouldn’t?) hence to enables international collaboration, hence 
english.

I once heard from a friend called Jean-Philippe de Mengual aka Texou that 
he wanted to translate emacs but couldn’t because he rightfully heard that 
would mean translate commands and identifiers and programs, etc. 

It was a pity because he often runs a lot of accessibility-oriented work 
especially about blindness (as he’s blind too), and emacs through 
emacspeak is well reknown as a wonderful vocal desktop (it wouldn’t 
surprise me that it would be the most efficient and useful vocal interface 
in the world).  This is likely to amount to emacs’ extensibility, which 
enables to freely, and without permission nor (to a limited extent) 
coordination, implement new paradigms, such as advice-oriented programming 
(which emacspeak ubiquitously use, so that it keeps working while 
modifying almost all emacs behavior, while staying in sync with mainline 
emacs).

Emacspeak is sort of wonderful and sooo complete I guess because of 
dogfeeding, its dev uses it for everything… but dogfeeding has its limits, 
and afaik he’s amero-indian, so english is his native language… and indeed 
emacspeak is most likely the best UI for english-speaking people… as is 
emacs.

It is no new that english, on par (or even more) than technical skills, is 
a great bareer to user-friendliness of a program.  So if emacs could be 
translated, it could gain a loooot more users… on the other side, that 
would break compatibility between many user extensions which would be 
divided between them because of language bareer…  But what evolution 
theory teaches is that more barieer also means more diversity, more 
mutations, hence more ideas.  Plus that would represent programs written 
by non-english-speakers, that wouldn’t have been written at all otherwise, 
so no loss.

But the greatest and first difficulty is that emacs is big and fast, so it 
should be done progressively, from the low level up, so APIs should be 
clearly divided, and modular… while emacs lisp still lacks any proper 
namespace system u.u

Another further difficulty is that not only translation is hard, but it is 
also somewhat contextual… sometimes, in a .po file, you need to go back to 
the source to see the context (and sometimes even run the program! to see 
the context of use) to understand how to translate… unfortunately, 
translating a program would require to understand even more context!  So 
it would need a special UI to fully see the original program while 
translating, otherwise it would be a mess, because any inconsistent 
translation would imply a bug

A special would be even more needed so you only translate strings/
identifiers at their definition.  So that when low-level API X and Y has 
been translated, some high-level API Z that would use X and Y would 
already have its “working” translated, and what would need to be 
translated would only be new defined identifiers: first and foremost 
“exported” ones (first prompts, menu bars, commands, docstrings) and then 
the “less useful”, “secondary”, “required to hack” stuff (internal 
functions, variable names, etc.).

This has never been done anywhere, but I can see how the first place where 
that would be really needed would be emacs, and the place where it would 
be the easiest to implement would also be emacs.  And if emacs succeed, it 
would either be very difficult elsewhere and thus emacs (maybe other lisps 
in general) would have a significant advantage, either it would spread from 
emacs and gives emacs hackability great advertisement.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17  9:53 ` Eli Zaretskii
  2021-07-17 13:32   ` mrf
@ 2021-07-17 20:06   ` Alexandre Garreau
  2021-07-17 22:03     ` Jean-Christophe Helary
  2021-07-18  6:30     ` Eli Zaretskii
  1 sibling, 2 replies; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-17 20:06 UTC (permalink / raw)
  To: help-gnu-emacs

Le samedi 17 juillet 2021, 11:53:24 CEST Eli Zaretskii a écrit :
> > From: Narendra Joshi <narendraj9@gmail.com>
> > Date: Sat, 17 Jul 2021 11:27:14 +0200
> > 
> > Are there translations for Emacs in other languages?
> 
> No, not at this time.  Translating the Emacs UI is a non-trivial
> project, as past discussions have indicated, for several good reasons.
> No one started to work on that seriously, AFAIK.

For new people and people like me who haven’t always seriously followed 
everything everytimes… when and what were these discussions?  Would you 
have (from memory, taking more of your time may be exagerated) some dates 
(year + trimester) or keywords (to search that would been used in topics).  
Were there many such discussions in the past? 1? 2? 3-4? more?




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-23  6:03           ` Jean Louis
  2021-07-17 22:03         ` Jean-Christophe Helary
  2021-07-18  6:28         ` Eli Zaretskii
  2 siblings, 2 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-17 20:57 UTC (permalink / raw)
  To: help-gnu-emacs

Alexandre Garreau wrote:

> Translating emacs would require to translate many
> identifiers, it would actually amount to translate
> a programming language

I don't think anyone suggests doing that, I think what can be
translated is *the interface*, so for example in the menu
"Quit" or "Exit" or whatever it says (I'm not a menu user)
_that_ would be translated. I don't think there are a lot of
advantages doing this, and I do see some DISadvantages, so
I think it shouldn't be done, actually, but the suggestion
isn't "translate everything", that would be an insane, almost,
rather than a bad suggestion.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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: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
  2 siblings, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2021-07-17 22:03 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list



> On Jul 18, 2021, at 5:00, Alexandre Garreau <galex-713@galex-713.eu> wrote:
> 
> Translating emacs would require to translate many identifiers, it would 
> actually amount to translate a programming language,


No. Eli mentioned that the commands indeed have a mnemonic function but localizing emacs can also start with the help and the UI strings *just like any other software*. The rest is a bonus.

-- 
Jean-Christophe Helary @brandelune
https://mac4translators.blogspot.com
https://sr.ht/~brandelune/omegat-as-a-book/




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 20:06   ` Alexandre Garreau
@ 2021-07-17 22:03     ` Jean-Christophe Helary
  2021-07-18  6:30     ` Eli Zaretskii
  1 sibling, 0 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2021-07-17 22:03 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list



> On Jul 18, 2021, at 5:06, Alexandre Garreau <galex-713@galex-713.eu> wrote:
> 
> Le samedi 17 juillet 2021, 11:53:24 CEST Eli Zaretskii a écrit :
>>> From: Narendra Joshi <narendraj9@gmail.com>
>>> Date: Sat, 17 Jul 2021 11:27:14 +0200
>>> 
>>> Are there translations for Emacs in other languages?
>> 
>> No, not at this time.  Translating the Emacs UI is a non-trivial
>> project, as past discussions have indicated, for several good reasons.
>> No one started to work on that seriously, AFAIK.
> 
> For new people and people like me who haven’t always seriously followed 
> everything everytimes… when and what were these discussions?  Would you 
> have (from memory, taking more of your time may be exagerated) some dates 
> (year + trimester) or keywords (to search that would been used in topics).  
> Were there many such discussions in the past? 1? 2? 3-4? more?

i18n, l10n on the dev list.


-- 
Jean-Christophe Helary @brandelune
https://mac4translators.blogspot.com
https://sr.ht/~brandelune/omegat-as-a-book/




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-19  1:51             ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-07-23  6:03           ` Jean Louis
  1 sibling, 2 replies; 238+ messages in thread
From: Jean-Christophe Helary @ 2021-07-17 22:06 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list



> On Jul 18, 2021, at 5:57, Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote:
> 
> Alexandre Garreau wrote:
> 
>> Translating emacs would require to translate many
>> identifiers, it would actually amount to translate
>> a programming language
> 
> I don't think anyone suggests doing that, I think what can be
> translated is *the interface*, so for example in the menu
> "Quit" or "Exit" or whatever it says (I'm not a menu user)
> _that_ would be translated.

Along with the help and the other user-facing strings (for ex, some strings in package.el)

Doing the UI only is not useful. The UI and the help would be tremendously useful.

-- 
Jean-Christophe Helary @brandelune
https://mac4translators.blogspot.com
https://sr.ht/~brandelune/omegat-as-a-book/




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 22:06           ` Jean-Christophe Helary
@ 2021-07-17 22:55             ` Alexandre Garreau
  2021-07-18  2:26               ` Jean-Christophe Helary
                                 ` (2 more replies)
  2021-07-19  1:51             ` Emanuel Berg via Users list for the GNU Emacs text editor
  1 sibling, 3 replies; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-17 22:55 UTC (permalink / raw)
  To: help-gnu-emacs

Le dimanche 18 juillet 2021, 00:06:03 CEST Jean-Christophe Helary a écrit 
:
> > On Jul 18, 2021, at 5:57, Emanuel Berg via Users list for the GNU
> > Emacs text editor <help-gnu-emacs@gnu.org> wrote:> 
> > Alexandre Garreau wrote:
> >> Translating emacs would require to translate many
> >> identifiers, it would actually amount to translate
> >> a programming language
> > 
> > I don't think anyone suggests doing that, I think what can be
> > translated is *the interface*, so for example in the menu
> > "Quit" or "Exit" or whatever it says (I'm not a menu user)
> > _that_ would be translated.
> 
> Along with the help and the other user-facing strings (for ex, some
> strings in package.el)
> 
> Doing the UI only is not useful. The UI and the help would be
> tremendously useful.

For me, a great deal of emacs UI are command + docstring, and I bet a 
great deal of menu comes from command and variable names…

But that makes me think that something really useful would be translating 
the manual, especially the less changing parts u.u




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  2 siblings, 1 reply; 238+ messages in thread
From: Jean-Christophe Helary @ 2021-07-18  2:26 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list



> On Jul 18, 2021, at 7:55, Alexandre Garreau <galex-713@galex-713.eu> wrote:
> 
> Le dimanche 18 juillet 2021, 00:06:03 CEST Jean-Christophe Helary a écrit 
> :
>>> On Jul 18, 2021, at 5:57, Emanuel Berg via Users list for the GNU
>>> Emacs text editor <help-gnu-emacs@gnu.org> wrote:> 
>>> Alexandre Garreau wrote:
>>>> Translating emacs would require to translate many
>>>> identifiers, it would actually amount to translate
>>>> a programming language
>>> 
>>> I don't think anyone suggests doing that, I think what can be
>>> translated is *the interface*, so for example in the menu
>>> "Quit" or "Exit" or whatever it says (I'm not a menu user)
>>> _that_ would be translated.
>> 
>> Along with the help and the other user-facing strings (for ex, some
>> strings in package.el)
>> 
>> Doing the UI only is not useful. The UI and the help would be
>> tremendously useful.
> 
> For me, a great deal of emacs UI are command + docstring, and I bet a 
> great deal of menu comes from command and variable names…
> 
> But that makes me think that something really useful would be translating 
> the manual, especially the less changing parts u.u

Bienvenu au club.

https://traduc.org/Emacs



-- 
Jean-Christophe Helary @brandelune
https://mac4translators.blogspot.com
https://sr.ht/~brandelune/omegat-as-a-book/




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:03         ` Jean-Christophe Helary
@ 2021-07-18  6:28         ` Eli Zaretskii
  2 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2021-07-18  6:28 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Alexandre Garreau <galex-713@galex-713.eu>
> Date: Sat, 17 Jul 2021 22:00:51 +0200
> 
> Translating emacs would require to translate many identifiers, it would 
> actually amount to translate a programming language

I think this is too radical, even impractical.  There's no need to
translate the language and the identifiers, we need "only" find a way
of providing their equivalents in other languages where that matters.
For example, a *Help* buffer describing a variable could include a
line which interprets the important parts of the variable's name in
the target language.  Or something along those lines.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 20:06   ` Alexandre Garreau
  2021-07-17 22:03     ` Jean-Christophe Helary
@ 2021-07-18  6:30     ` Eli Zaretskii
  1 sibling, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2021-07-18  6:30 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Alexandre Garreau <galex-713@galex-713.eu>
> Date: Sat, 17 Jul 2021 22:06:13 +0200
> 
> For new people and people like me who haven’t always seriously followed 
> everything everytimes… when and what were these discussions?

On emacs-devel.

> Would you have (from memory, taking more of your time may be
> exagerated) some dates (year + trimester) or keywords (to search
> that would been used in topics).

I don't usually remember search keywords; life is too short.  Try the
obvious ones: i18n, translation, gettext, message catalogs, ...

> Were there many such discussions in the past? 1? 2? 3-4? more?

Maybe two or three.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 22:55             ` Alexandre Garreau
  2021-07-18  2:26               ` Jean-Christophe Helary
@ 2021-07-18  6:47               ` Eli Zaretskii
  2021-07-19  1:52               ` Emanuel Berg via Users list for the GNU Emacs text editor
  2 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2021-07-18  6:47 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Alexandre Garreau <galex-713@galex-713.eu>
> Date: Sun, 18 Jul 2021 00:55:48 +0200
> 
> For me, a great deal of emacs UI are command + docstring, and I bet a 
> great deal of menu comes from command and variable names…

No, it doesn't, at least not by and large.

> But that makes me think that something really useful would be translating 
> the manual, especially the less changing parts u.u

Translating the manuals is a no-brainer, and doesn't need any
infrastructure (except the method of installing manuals in different
languages on the same system, but that issue is not specific to Emacs,
it's a general Texinfo issue).



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 22:03         ` Jean-Christophe Helary
@ 2021-07-19  1:46           ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-19  1:46 UTC (permalink / raw)
  To: help-gnu-emacs

Jean-Christophe Helary wrote:

> localizing emacs can also start with the help and the UI
> strings *just like any other software*. The rest is a bonus.

?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 22:06           ` Jean-Christophe Helary
  2021-07-17 22:55             ` Alexandre Garreau
@ 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-19 11:43               ` Alexandre Garreau
  1 sibling, 2 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-19  1:51 UTC (permalink / raw)
  To: help-gnu-emacs

Jean-Christophe Helary wrote:

> Doing the UI only is not useful. The UI and the help would
> be tremendously useful.

Anglo-American beat French to world dominance, accept it.
It happened everywhere, including diplomacy, but in particular
it happened in the world of computers. Where we happen to be
right now. There is no miniature world of computers where
everyone speaks French or any other language who badly needs
translations, drop it.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-17 22:55             ` Alexandre Garreau
  2021-07-18  2:26               ` Jean-Christophe Helary
  2021-07-18  6:47               ` Eli Zaretskii
@ 2021-07-19  1:52               ` Emanuel Berg via Users list for the GNU Emacs text editor
  2 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-19  1:52 UTC (permalink / raw)
  To: help-gnu-emacs

Alexandre Garreau wrote:

> But that makes me think that something really useful would
> be translating the manual, especially the less changing
> parts

The usefulness of that: zéro

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-18  2:26               ` Jean-Christophe Helary
@ 2021-07-19  1:53                 ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-19  1:53 UTC (permalink / raw)
  To: help-gnu-emacs

Jean-Christophe Helary wrote:

> Bienvenu au club.

Plan jihad in you spare time please.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-19 11:43               ` Alexandre Garreau
  1 sibling, 1 reply; 238+ messages in thread
From: Thibaut Verron @ 2021-07-19  5:28 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs

Le lun. 19 juil. 2021 à 04:00, Emanuel Berg via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org> a écrit :
>
> Jean-Christophe Helary wrote:
>
> > Doing the UI only is not useful. The UI and the help would
> > be tremendously useful.
>
> Anglo-American beat French to world dominance, accept it.
> It happened everywhere, including diplomacy,

Don't diplomats have interprets?

> but in particular
> it happened in the world of computers. Where we happen to be
> right now. There is no miniature world of computers where
> everyone speaks French or any other language who badly needs
> translations, drop it.

You've clearly never been to France. :) More seriously, a lot of
people in China and Japan, including in the software industry, do not
speak English. Translations would be very useful for them.

And all over the world, a lot of students who do not feel confident
with English treat the lack of available translations as a significant
hurdle, or even a barrier. That's true for a lot of things, from
scientific literature to, yes, software documentation.

Your replies in this thread strike me as unusually hostile. Why is it
such a big problem that some want to translate the emacs help and
manual?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-19 11:43               ` Alexandre Garreau
  2021-07-21  6:11                 ` Emanuel Berg via Users list for the GNU Emacs text editor
  1 sibling, 1 reply; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-19 11:43 UTC (permalink / raw)
  To: help-gnu-emacs

Le lundi 19 juillet 2021, 03:51:08 CEST Emanuel Berg via Users list for 
the GNU Emacs text editor a écrit :
> Jean-Christophe Helary wrote:
> > Doing the UI only is not useful. The UI and the help would
> > be tremendously useful.
> 
> Anglo-American beat French to world dominance, accept it.

Nobody told in this thread French had any world dominance.  Although you 
may note that the concern about english is often raised by french people, 
and maybe for some sort of inconscious nationalism or rempent national 
aversion toward english due to that previous context, the concern stays 
valid, and you cannot cancel an argument validity due to the people who 
raise it.

> There is no miniature world of computers where
> everyone speaks French or any other language who badly needs
> translations, drop it.

There is, not only in france, but any non-germanic place I have been 
through.  English, just like french, is a difficult language, with lot of 
vocabulary.  You’re living is a small-world utopia that’s nowhere near 
even realistic.

Even those who *fluently* speak english are commonly *tired* with it.  Even 
I, and actually anybody because that’s natural, would choose to read 
something in their native(s) language(s) rather than a foreign one, and 
doing that would imply less effort, energy spent, hence more reading and 
work done than if done through english.

Just to be sure, you’re a native speaker of english right? so how could 
you even *know* that? or have you tried to work in mandarin on the ground 
that its syntax is said to be simple and flexionless, to say it’s as easy 
as in your native language? otherwise, do you have studies showing the 
opposite? since you’re not the one bringing the argument, the burden of 
proof should fall on us, and currently I’m being lazy at it, but if anyone 
brings such studies (which shouldn’t be any more difficult to find than any 
study, but I’m bad at searching) I doubt you would have anything to oppose 
to that u.u

There are everywhere teachings of CS in english *as a special matter*, 
that’s a way to *train* for english because that training is *needed* 
because it is nonnatural, and it is a difficulty and people try lowering it 
by confronting to it… yet most of courses are in the national language, 
not english.  Some vocabulary obviously comes from english, and 
englishisms are present more often than not, but the grammar, phonology, 
orthography, syntax, and most of vocabulary we use stay our national (or 
even sometimes, with luck (that means not in france) the local one) 
language.

It is up to the point I’ve personally observed that something translated 
is perceived as more “user-friendly” than something graphical, variable-
spaced and colored, up to the point that this common cliché of white 
monospace text on black background with no graphics, no mouse and none 
input but keyboard, that scares many outsiders, newcomers, etc., stays 
less deterring than an all english interface.  In this respect emacs still 
performs badly, and I can’t recommend it to many people I know, especially 
non-programmers, because of that (and it would be sad for you to take as 
argument “emacs is only for programmers and CS-ists”).

That would be the kind of “user-friendliness”, btw, that may have an 
effective impact on making more women or minorities join CS, and moreover 
less occidental, as that concern has come more into fashion recently.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  8:28                   ` Christopher Dimech
  0 siblings, 2 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21  5:24 UTC (permalink / raw)
  To: help-gnu-emacs

Thibaut Verron wrote:

>> Anglo-American beat French to world dominance, accept it.
>> It happened everywhere, including diplomacy,
>
> Don't diplomats have interprets?

They used to speak French, now they speak English.

We see traces of this in for example the Euro Vision Song
Contest where they tell the score in English and French.

But numbers don't lie, pick up a book from your bookshelf and
have a look, find a ISBN number with 13 digits (a so-called
ISBN-13, they start with 978- or 979 which is the GS1 prefix),
and tell me, what is the number immediately following the
GS1 prefix - i.e., the 4th number?

Please, just deal with it and go on, this is so embarrassing
every time it comes up :(

> You've clearly never been to France. :)

I've been to France, I've been to Belgium, I've met French and
Belgian programmers, French and Belgian students, French and
Belgian activists [1] (that has nothing to do with computers,
even), they _all_ speak very good English! Just like you two
guys do!

> More seriously, a lot of people in China and Japan,
> including in the software industry, do not speak English.

Wrong! They do, and they do even more and better for each
year, and the very small group who don't, well, they have
a HUGE problem that should be fixed by them putting ALL their
efforts learning English as soon as possible - it is
*impossible* to be a tech/science person 2021 and not knowing
English - luckily, this isn't the case, but if there were more
people like you translating stuff not even then could you
ever, ever do it to any extent that would mean a positive to
those very few who don't know English, it would be a NEGATIVE
since they would only have access to a small fraction of the
material available, and in the worst case they would be
deluding themselves thinking they are so great, while actually
living in a bubble 10 000 miles behind everyone else!

Luckily this isn't the case at all - French tech people and
French people in general have no problem whatsoever mastering
English, they want to do it, they benefit from it, everyone
else benefit from it, and most of all, it is the REALITY that
we have that everyone needs to accept for their own benefit!

Speak French to people on the street all you want - of course
- but the language of science and technology 2021 is English,
Anglo-American, and to a large extent American English (writhe
"color" in source, not "colour", however write that in the UK
tabloids, by all means). It _is_ English and I don't care who
had a lousy colonial empire or not...

> Translations would be very useful for them.

No, on the contrary, it would be a negative to them.

> And all over the world, a lot of students who do not feel
> confident with English treat the lack of available
> translations as a significant hurdle, or even a barrier.

100% incorrect.

> Your replies in this thread strike me as unusually hostile.
> Why is it such a big problem that some want to translate the
> emacs help and manual?

Yes, because I've heard this so many times before, all the
incorrect arguments, and it is bit provoking that it is ALWAYS
the French who brings this up no matter what e-mail list or
what tent on G8 in Rostock you are on! Every meeting, start
with a vote which the French guys insist on (despite speaking
English), French people propose French as the language (what
a surprise) and then get voted down 21-4, 14-3, 45-11
every time.

Why aren't the Russian, German and so on people who are also
part of huge language and language groups making this "French
case" you think?

Can it be that they are a bit more modest with respect to
their own language? Or do they simply understand like everyone
else what a huge benefit it is to them _and everyone_ with
a common langauge for science and technology, and they are
enthusiastic about learning this for their own
information-input but also the ambition to give their own
information-output?

Which, BTW, is exactly like the French are, so why on Earth
keep up with this charade?

#@$%&!

PS. ha :)

[1] https://dataswamp.org/~incal/blog/index.html

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  7:31                   ` Alexandre Garreau
  0 siblings, 2 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21  6:11 UTC (permalink / raw)
  To: help-gnu-emacs

Alexandre Garreau wrote:

>> Anglo-American beat French to world dominance, accept it.
>
> Nobody told in this thread French had any world dominance.
> Although you may note that the concern about english is
> often raised by french people

They are the ONLY people who EVER brings this up.

> and maybe for some sort of inconscious nationalism or
> rempent national aversion toward english due to that
> previous context, the concern stays valid, and you cannot
> cancel an argument validity due to the people who raise it.

We WANT the French-speaking people, and they are here already
as we clearly see, but this isn't the 70s anymore where there
were one "expert" on the same subject in every god damned
country who had read a couple of 12 books on the subject and
wrote a nice summary on in, resembling pretty much exactly
what some other dude did in some other country reading his 12
books! The langauge of science and technology IS English, it
if had been French I would have written the same thing, only
in defense of French - but it _isn't_ French, and everyone
understands that - even the French, as we clearly see - but
unlike everyone else, the French pretends or do not accept
this in some places of their minds, so they bring this up over
and over, #$&%@!

>> There is no miniature world of computers where everyone
>> speaks French or any other language who badly needs
>> translations, drop it.
>
> There is

THERE IS NOT, and whatever fraction there is is getting
smaller by the day, it isn't a place were you yourself would
like to be restricted to, so why ever would you like that for
your compatriots that are, BTW, fully capable of learning
English just like everyone else? In fact, the French language
is much closer to English than a lot of other languages, there
is no disadvantage at all in any sense or in anyway, and we
see this every day when we speak English to people from the
French-speaking world!

> not only in france, but any non-germanic place I have been
> through. English, just like french, is a difficult language

No, because of popular culture, technology, and proximity of
languages it is very easy for anyone these days to learn
English, if the have any ambitions whatsoever with science and
technology they already know English before they even enter
the university?

> with lot of vocabulary. You’re living is a small-world
> utopia that’s nowhere near even realistic.

We live in the same world of science and technology where the
language is English, maybe it made sense in the 70-80s to
translate the man pages or whatever (the French were the only
ones who got close BTW, that said French programmers today are
typically _not_ using that old, incomplete, un-updated stuff
were you have to wonder - even if it was perfect, which it is
not and cannot be, so no disrespect to the translators - even it
if was perfect they'd still have to wonder about what
everything is, what is interface, hash algorithm, API, proxy, client-server,
raster, shading langauge, checksum, compression with the use
of tagged chunks, Alice and Bob in French? why aren't the
English-language software options congruent with ... wait,
what terms are we using, even? The French or the English?
(Oh, I know Alice and Bob - Abelard et Héloïse, n'est-ce pas?)

> Even those who *fluently* speak english are commonly *tired*
> with it.

No, that is true only in the initial, beginner phase, then on
the contrary one gets tired of reading it in a language that
is _foreign_ to it, the _native_ language is always the best
and the native language in the science and technology world is
English, US English in particular.

> Even I, and actually anybody because that’s natural, would
> choose to read something in their native(s) language(s)
> rather than a foreign one

English isn't foreign here, it is the native language of
the field.

> Just to be sure, you’re a native speaker of english right?

Hahaha :) Are you kidding, I'm Swedish! That said, these
rantings are to be put on my account solely, I'm sure many of
my countrymen who reads this thinks I'm insane or something...
ha :)

> or have you tried to work in mandarin

This instant, in another buffer I have a friend on IRC from
ROC and he speaks better English than me (he thinks that at
least :)) and I was a CS student when Sweden offered courses
free of charge (now they do that only to EU contrives) so every
course, taught in English, was like 50% people from China!
I lived in a student house for 7 years with a configuration of
Chinese people ALWAYS present at one time or the other,
EVERYONE spoke English, all the books were in English, exams
were in English, the Chinese guys were sometimes a weird bunch
to deal with on an everyday basis but the problem was _never_
their or mine or anyone else's (certainly not the French who
were also there, but in much smaller numbers) NO ONE had any
problem whatsoever with the English, trust me!

> on the ground that its syntax is said to be simple and
> flexionless, to say it’s as easy as in your native language?

I'm not saying I or anyone else is as good with English as we
are with our own languages, except for when speaking of one
thing - technology. The language is of course not perfect, how
could it ever be, but it is "good enough for government work",
good enough for the intended purpose. (I don't think my
English as in English in general is that good actually, maybe
my ROC friend is right.)

> otherwise, do you have studies showing the opposite?

We don't need studies, we have something stronger, reality.

> There are everywhere teachings of CS in english *as
> a special matter*, that’s a way to *train* for english
> because that training is *needed* because it is nonnatural,
> and it is a difficulty and people try lowering it by
> confronting to it... yet most of courses are in the national
> language, not english.

Not here. But that's OK, I'm not saying all universities that
teach technology must necessarily do everything in English
this very instant. But that's were we are heading anyway.
In the 70s everyone wrote their PhDs in their own languages.
Now people even write their BSc in English. There will only be
more and more of this and that's a good thing. Those who don't
will be at a disadvantage. Those who do not know _any_ English
will be at such a disadvantage they won't be able to
contribute or acquire information in a way that make them even
belong, sorry.

> Some vocabulary obviously comes from english, and
> englishisms are present more often than not, but the
> grammar, phonology, orthography, syntax, and most of
> vocabulary we use stay our national (or even sometimes, with
> luck (that means not in france) the local one) language.

Yes, of course, but it isn't about that, it is about English
as a tool to communicate about technology, it isn't about the
beauty of the language, I'm sure some of the things I write
would make a Grammar School teacher blush, but that's OK, it
is at this point unavoidable and perhaps that will always be
like that, even, but even now and long before I write this
people have collaborated on zillion projects speaking English -
and French and Russian also, and Swedish even - only these
languages didn't make it to the #1 position that English has,
right here and right now - so instead of translating, if you
want to help "your" people (not necessary IMO, but OK) what
you should do is became English _teachers_, not translators,
and teach the very, very rare technology GENIUS who can do
EVERYTHING with a keyboard but cannot speak or write a word
of English - I don't believe these people exist in their
miniature worlds consisting of themselves and equally
language-blind friends hacking the Pentagon and Fort Knox - but
if you find them, YES, do us all a favor and tech them English
so we all can be helped by their marvelous work, and maybe
help them a bit as well hehe :)

> emacs is only for programmers and CS-ists

Yes, but it is much, much broader than that, you don't have to
be a programmer, it is enough to have a smartphone and
smart-TV and god damn computer, this has already contributed
A LOT to how people speak English, Germans at 20 for example
speak much better English than I did, when I was 20 (and then
I thought Germans couldn't speak English at all, maybe), so
NO, it is not necessary for you to be an Emacs user or
programmer, everyone that uses technology is benefited
tremendously for knowing English and it works both ways,
technology makes you better at English (ordinary English,
between humans) as well, because English is not the langauge
of just nations like the US, England <3, Australia <3 and so
on, it is also the language of TECHNOLOGY, so make people
COME, don't work on things that will make them NOT COME @%&#$!

> That would be the kind of "user-friendliness", btw, that may
> have an effective impact on making more women or minorities
> join CS, and moreover less occidental, as that concern has
> come more into fashion recently.

Women are already almost 100% binary and they are better at
communicating than men some would say so they would have no
problem because of the English language to join the tech world
and if we take a look on reality this has been the case for as
long as I don't know.

As for minorities that have historically had a position of
disadvantage the more technology and the more English to them
the better!

PS. ha :) stop it...

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  8:28                   ` Christopher Dimech
  1 sibling, 1 reply; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-21  6:32 UTC (permalink / raw)
  To: help-gnu-emacs

Le mercredi 21 juillet 2021, 07:24:36 CEST Emanuel Berg via Users list for 
the GNU Emacs text editor a écrit :
> Thibaut Verron wrote:
> >> Anglo-American beat French to world dominance, accept it.
> >> It happened everywhere, including diplomacy,
> > 
> > Don't diplomats have interprets?
> 
> They used to speak French, now they speak English.
> 
> We see traces of this in for example the Euro Vision Song
> Contest where they tell the score in English and French.

you are trying to demonstrate english is the most dominant language, 
*that* is embarrassing: why are you trying to demonstrate the obvious 
while everybody already agrees? it would be as embarassing as someone 
trying to demonstrate very hard that north america + europe is more 
powerful than the rest of the globe combined… okay, so what? is there any 
pride in it? nobody even *questioned* it here.

> Please, just deal with it and go on, this is so embarrassing
> every time it comes up :(

you are not the final authority on what is supposed to be embarrassing u.u

> > You've clearly never been to France. :)
> 
> I've been to France, I've been to Belgium, I've met French and
> Belgian programmers, French and Belgian students, French and
> Belgian activists [1] (that has nothing to do with computers,
> even), they _all_ speak very good English! Just like you two
> guys do!

you’ve been mostly with educated people, not with people who struggle 
learning, or are in less educated portion of society.

but you could ignore them in two ways: saying “enough people know about 
computer science, we don’t need more” (many people will disagree), and 
saying “emacs is only for programmers” (same…).  But this is getting 
repetitive, you are purposedly avoiding relevant arguments u.u

> > More seriously, a lot of people in China and Japan,
> > including in the software industry, do not speak English.
> 
> Wrong! They do, and they do even more and better for each
> year, and the very small group who don't,

no really try going to these places, most of people really don’t.  it’s 
logical you’ve been to europe, but there is even worse.

Actually, try even to go to eastern europe: the situation is “better” than 
in eastern asia, but still a looooot “worse” than rest of europe.

> well, they have
> a HUGE problem that should be fixed by them putting ALL their
> efforts learning English as soon as possible - it is
> *impossible* to be a tech/science person 2021 and not knowing
> English

it seems to me both of you are mixing two different matters: tech/science 
people and general people.  general people most often don’t master english 
as good as us, and of course the situation is better for english in tech/
science.

now I know I’m not the only one who believe it’s not bad that it’s 
possible to do science/tech without english.  I mean people in the 
influence spheres of china and russia do that commonly.  and yet I’m for 
globalization, but this is some sort of dogmatism that seems weird to me… 
why imposing stuff to people? if something is so important, the compressed 
version of it will eventually be translated to english and reach the wider 
world anyway…

> - luckily, this isn't the case, but if there were more
> people like you translating stuff not even then could you
> ever, ever do it to any extent that would mean a positive to
> those very few who don't know English, it would be a NEGATIVE
> since they would only have access to a small fraction of the
> material available,

a fraction that would not have been available before, I don’t see how 
that’s negative

> Luckily this isn't the case at all - French tech people and
> French people in general have no problem whatsoever mastering
> English,

of course we don’t, 75% of your vocabulary comes from our language, the 
only issue is when you need to speak it aloud… once you become fluent at 
it, you just resign to your eternal inferiority at not being able to 
distinguish 22 different vowels (and french is not really better with 17 
vowels among whose 4 nasals), added to the common stress, insecurity and 
other psychological issues that are really common among frenches about 
languages in general

> they want to do it, they benefit from it, everyone
> else benefit from it, and most of all, it is the REALITY that
> we have that everyone needs to accept for their own benefit!

so it is… so why do you need to claim it so loud and verbosely? I’d really 
like to know, I’ve never observed that reaction yet

Is it that you are particularely afraid about translation? does it sound 
like something obscurantist to you?

> > And all over the world, a lot of students who do not feel
> > confident with English treat the lack of available
> > translations as a significant hurdle, or even a barrier.
> 
> 100% incorrect.

how do you know? I mean yet asserting something may need a little proof… 
denying it (as the existence of anything) would need a lot more than that: 
how can you be so assertive about it?

> > Your replies in this thread strike me as unusually hostile.
> > Why is it such a big problem that some want to translate the
> > emacs help and manual?
> 
> Yes, because I've heard this so many times before, all the
> incorrect arguments, and it is bit provoking that it is ALWAYS
> the French who brings this up no matter what e-mail list or
> what tent on G8 in Rostock you are on! Every meeting, start
> with a vote which the French guys insist on (despite speaking
> English), French people propose French as the language (what
> a surprise) and then get voted down 21-4, 14-3, 45-11
> every time.

this is really hillarous (I’ve heard it so many times but never saw it 
myself yet), it recalls me some really hillarous excerpt from some czeck 
writer, Kundera.

> Why aren't the Russian, German and so on people who are also
> part of huge language and language groups making this "French
> case" you think?

why german? I would have said russian and mandarin and spanish.

especially russian actually.

actually it happens, but around russia.

it’s weird it happens more often for russian than spanish, while spanish 
is considered easier, and simpler to speak.

> Can it be that they are a bit more modest with respect to
> their own language? Or do they simply understand like everyone
> else what a huge benefit it is to them _and everyone_ with
> a common langauge for science and technology,

there always have been a common language, don’t worry, be it greek, latin, 
english, there always will be one, that’s natural, there’s nothing to be 
afraid about.

> Which, BTW, is exactly like the French are, so why on Earth
> keep up with this charade?

good question, do you think they’re aren’t the same french? what are the 
sociological differences you noticed between each groups?




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  7:31                   ` Alexandre Garreau
  1 sibling, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21  7:02 UTC (permalink / raw)
  To: help-gnu-emacs

> but this isn't the 70s anymore where there were one "expert"
> on the same subject in every god damned country who had read
> a couple of 12 books on the subject and wrote a nice summary
> on in, resembling pretty much exactly what some other dude
> did in some other country reading his 12 books

Oh, I shouldn't have said that, or not in that way at least,
for the record, just because there was this tendency here and
there and that was possible because of the general situation
that doesn't mean everyone or even the majority were like
this, there were of course very good researchers and
scientists in the 70s, some who wrote great stuff in their
native languages and some who knew like 5 languages and wrote
in several languages as well.

Apologies if anyone took that the wrong way...

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  7:31                   ` Alexandre Garreau
  2021-07-21  7:47                     ` Thibaut Verron
  1 sibling, 1 reply; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-21  7:31 UTC (permalink / raw)
  To: help-gnu-emacs

Le mercredi 21 juillet 2021, 08:11:36 CEST Emanuel Berg via Users list for 
the GNU Emacs text editor a écrit :
> Alexandre Garreau wrote:
> >> Anglo-American beat French to world dominance, accept it.
> > 
> > Nobody told in this thread French had any world dominance.
> > Although you may note that the concern about english is
> > often raised by french people
> 
> They are the ONLY people who EVER brings this up.

ok so what? that a french says something does not make it automatically 
wrong.  and if you already contradicted other frenches in the same way 
well we are not all connected through a shared mind so you cannot expect 
us to learn that once for all.

> > and maybe for some sort of inconscious nationalism or
> > rempent national aversion toward english due to that
> > previous context, the concern stays valid, and you cannot
> > cancel an argument validity due to the people who raise it.
> 
> We WANT the French-speaking people, and they are here already
> as we clearly see, but this isn't the 70s anymore where there
> were one "expert" on the same subject in every god damned
> country who had read a couple of 12 books on the subject and
> wrote a nice summary on in, resembling pretty much exactly
> what some other dude did in some other country reading his 12
> books! The langauge of science and technology IS English, it
> if had been French I would have written the same thing, only
> in defense of French - but it _isn't_ French, and everyone
> understands that - even the French, as we clearly see - but
> unlike everyone else, the French pretends or do not accept
> this in some places of their minds, so they bring this up over
> and over, #$&%@!

indeed, so nobody is arguing about that, so why bring it on?

> >> There is no miniature world of computers where everyone
> >> speaks French or any other language who badly needs
> >> translations, drop it.
> > 
> > There is
> 
> THERE IS NOT, and whatever fraction there is is getting
> smaller by the day, it isn't a place were you yourself would
> like to be restricted to, so why ever would you like that for
> your compatriots that are, BTW, fully capable of learning
> English just like everyone else?

some people don’t, sometimes by inability (yet I can concede that ability 
is usually very connected with the needed abilities to be competent in CS… 
yet there is (unfortunately?) a strong pressure to put more people inside 
CS than the quantity of people that may be competent in it), sometimes 
hindered by some psychological issue (btw that same kind of issues is what 
drives many people away from CS, especially womyns… yet these are 
unrelated).

> In fact, the French language
> is much closer to English than a lot of other languages, there
> is no disadvantage at all in any sense or in anyway, and we
> see this every day when we speak English to people from the
> French-speaking world!

our languages are equally unspokable with unneededly complex phonology, 
unlike most languages on the earth, also

> > not only in france, but any non-germanic place I have been
> > through. English, just like french, is a difficult language
> 
> No, because of popular culture, technology, and proximity of
> languages it is very easy for anyone these days to learn
> English, if the have any ambitions whatsoever with science and
> technology they already know English before they even enter
> the university?

I guess according that viewpoint of yours many people entering university 
just do without “ambitions”, so we should bar that from them.

english may be, because of its dominance, a lot facilitated, but in 
comparison with many languages it is difficult, mostly because of its 
phonology and imprecision.  but french is equally bad about that.  if it 
had been mandarin or russian I’d find it better (but if you start talking 
about tones or number of verb forms and how that would make that 
impossible, you would get the point the same issue arise with english 
making it somehow impossible for some people).

> > with lot of vocabulary. You’re living is a small-world
> > utopia that’s nowhere near even realistic.
> 
> We live in the same world of science and technology where the
> language is English, maybe it made sense in the 70-80s to
> translate the man pages or whatever (the French were the only
> ones who got close BTW, that said French programmers today are
> typically _not_ using that old, incomplete, un-updated stuff
> were you have to wonder -

I swear they do

> even if it was perfect, which it is
> not and cannot be, so no disrespect to the translators

you are doing the very opposite from respect telling their work is 
negative :') but well everybody should be allowed to tell a whole 
discipline is useless or even negative, who knows that may be right (I 
usually think that way about english teachers (I mean, people speaking 
english for real never do that because of teachers, that’s so much money 
wasted)).

> - even it
> if was perfect they'd still have to wonder about what
> everything is, what is interface,

interface

> hash algorithm, 

algorithme de hachage

> API,

the english term is just used (but pronounced in french), but it seems to 
be used only in modern context or by younger people, in other cases 
“interface” (or the translation of library, by metonymy)

> proxy,

used as is

> client-server,

those words are from french

> raster,

used as is

> shading langauge,

same

> checksum,

often same, otherwise “somme de contrôle” when you want to sound formal

> compression with the
> use
> of tagged chunks, Alice and Bob in French? why aren't the
> English-language software options congruent with ... wait,
> what terms are we using, even? The French or the English?
> (Oh, I know Alice and Bob - Abelard et Héloïse, n'est-ce pas?)

Alice is commonly used in France, but not Bob (yet it is known), so we use 
them as well when explaining cryptography (same for Eve (though most 
frenchs aren’t aware about the pun with “evesdropping”), etc.), the last 
two french names sound from the past century.

I mean most languages, especially with technology, just do that: copy 
words.  That’s precisely why 75% of english vocabulary comes from french, 
whose a great part comes straight from latin, whose a great part comes 
straight from greek, whose some part comes from egyptian (or other semitic 
language at some other point of time)…

I mean, when two people in a country speaking the same language need to 
talk about their discipline, do you really believe they use english? 
orally? that would be extremely painful, even if both often are fluent, and 
write most of their stuff in english, and publish only in english.

the fact technology globalize (and it always have) doesn’t makes languages 
disappear

capitalism added to imperialism and nationalism eventually makes languages 
disappear, but france has purposedly made disappear enough languages so 
for it to be obvious.

> > Even those who *fluently* speak english are commonly *tired*
> > with it.
> 
> No, that is true only in the initial, beginner phase,

I’m speak english fluently since a decade, you pretend I speak it well, and 
yet it makes me tired, for real.

some languages are less tiring than others, spanish and russian are kinda 
okay, but english is really tiring because I *all the time* try to 
pronounce stuff correctly, which is of course impossible, and a huge 
distraction, and I could just try to make up some weird pseudo-italian 
accent that would look russian and I would be less distracted but it 
sounds weird enough that I quickly resume back to trying to fake original 
english accent and here we go…

I’m not the only one, I mean you are trying to counterargument very very 
very obvious stuff and wasting most of your credit to any english-non-
native reader u.u

> then on
> the contrary one gets tired of reading it in a language that
> is _foreign_ to it,

to what?

> the _native_ language is always the best
> and the native language in the science and technology world is
> English, US English in particular.

native in this context does not mean anything. in linguistics, sociology, 
demography, history, etc. native has a very specific meaning, and you are 
trying to borrow a weird meaning, most likely from a metaphor inside CS, 
except it is conflicting with some other science so it’s not understandable 
anymore

> > Even I, and actually anybody because that’s natural, would
> > choose to read something in their native(s) language(s)
> > rather than a foreign one
> 
> English isn't foreign here, it is the native language of
> the field.

and yet I can’t be sure you’re right or trolling me about the meaning of 
foreign…

understand “non-native to said person” if you prefer… my point still 
holds.

> > Just to be sure, you’re a native speaker of english right?
> 
> Hahaha :) Are you kidding, I'm Swedish!

well at least that’s still a germanic language u.u and english is a lot 
more common in your countries than in latin ones (and in these it is still 
more than anywhere else)

> That said, these
> rantings are to be put on my account solely, I'm sure many of
> my countrymen who reads this thinks I'm insane or something...
> ha :)

well it is reassuring that you’re aware of the level of the point you’re 
trying to make, at least I won’t generalize anything and keep in mind that 
it’s only you saying that, because otherwise it would have been very 
desperating u.u (I mean for instance lately I’ve had a “chance” to speak 
to a lot more extreme-right-wing ppl, and I wouldn’t wanted another such 
novelty…)

> > or have you tried to work in mandarin
> 
> This instant, in another buffer I have a friend on IRC from
> ROC

wait what’s roc?

> and he speaks better English than me (he thinks that at
> least :)) and I was a CS student when Sweden offered courses
> free of charge (now they do that only to EU contrives) so every
> course, taught in English, was like 50% people from China!
> I lived in a student house for 7 years with a configuration of
> Chinese people ALWAYS present at one time or the other,
> EVERYONE spoke English, all the books were in English, exams
> were in English, the Chinese guys were sometimes a weird bunch
> to deal with on an everyday basis but the problem was _never_
> their or mine or anyone else's (certainly not the French who
> were also there, but in much smaller numbers) NO ONE had any
> problem whatsoever with the English, trust me!

you realize you (a) did not answer about mandarin, (b) that this cannot be 
representative in any way, because china already holds more than a eigth 
of current humankind right?

> > on the ground that its syntax is said to be simple and
> > flexionless, to say it’s as easy as in your native language?
> 
> I'm not saying I or anyone else is as good with English as we
> are with our own languages,

it sometimes really looked like it.  I guess you must admit some “small 
areas of exception”, but not acknowledging the tire of speaking a 
different-from-native language really looks like it…

> except for when speaking of one
> thing - technology. The language is of course not perfect, how
> could it ever be, but it is "good enough for government work",
> good enough for the intended purpose. (I don't think my
> English as in English in general is that good actually, maybe
> my ROC friend is right.)
> 
> > otherwise, do you have studies showing the opposite?
> 
> We don't need studies, we have something stronger, reality.

oh ok it’s a joke, haha ^^

> > There are everywhere teachings of CS in english *as
> > a special matter*, that’s a way to *train* for english
> > because that training is *needed* because it is nonnatural,
> > and it is a difficulty and people try lowering it by
> > confronting to it... yet most of courses are in the national
> > language, not english.
> 
> Not here. But that's OK, I'm not saying all universities that
> teach technology must necessarily do everything in English
> this very instant.

can’t wait all germanic languages extinguish into english so at least that 
kind of argument won’t be held anymore.  maybe one or two generations 
would be sufficient…

> But that's were we are heading anyway.
> In the 70s everyone wrote their PhDs in their own languages.

I bet ukrainians unfortunately didn’t do that in ukrainian…

> Now people even write their BSc in English. There will only be
> more and more of this and that's a good thing. Those who don't
> will be at a disadvantage.

even doing it, not having english as a native language puts you at a 
disadvantage.  just look at the native language of most current 
billionaires…

actually the best thing would be “just get born into an english-speaking 
country”, tbh. but this has been said a lot of times.

> Those who do not know _any_ English
> will be at such a disadvantage they won't be able to
> contribute or acquire information in a way that make them even
> belong, sorry.

belong to what?

I’m sure there are people in korea and china doing very relevant work in 
technology, that is only afterwards translated into english.

> > Some vocabulary obviously comes from english, and
> > englishisms are present more often than not, but the
> > grammar, phonology, orthography, syntax, and most of
> > vocabulary we use stay our national (or even sometimes, with
> > luck (that means not in france) the local one) language.
> 
> Yes, of course, but it isn't about that, it is about English
> as a tool to communicate about technology, it isn't about the
> beauty of the language,

I didn’t bring that on in this paragraph

> I'm sure some of the things I write
> would make a Grammar School teacher blush, but that's OK, it
> is at this point unavoidable and perhaps that will always be
> like that, even, but even now and long before I write this
> people have collaborated on zillion projects speaking English -
> and French and Russian also, and Swedish even - only these
> languages didn't make it to the #1 position that English has,
> right here and right now - so instead of translating, if you
> want to help "your" people (not necessary IMO, but OK) what
> you should do is became English _teachers_,

this is a despiceable job.  you learn a language by using it, not by 
studying it.  writing interesting material in the said language is more 
productive than teaching it.  also language teaching is extremely bad in 
this country, and nobody exactly understands why (but possibly because of 
french and how french people relate to it (that may explain why many 
french people bring that on))
 
> > emacs is only for programmers and CS-ists
> 
> Yes, but it is much, much broader than that, you don't have to
> be a programmer, it is enough to have a smartphone and
> smart-TV and god damn computer, this has already contributed
> A LOT to how people speak English, Germans at 20 for example
> speak much better English than I did, when I was 20 (and then
> I thought Germans couldn't speak English at all, maybe), so
> NO, it is not necessary for you to be an Emacs user or
> programmer, everyone that uses technology is benefited
> tremendously for knowing English and it works both ways,
> technology makes you better at English (ordinary English,
> between humans) as well, because English is not the langauge
> of just nations like the US, England <3, Australia <3 and so
> on

the term you are searching for is “US + commonwealth”.

> it is also the language of TECHNOLOGY, so make people
> COME, don't work on things that will make them NOT COME @%&#$!

actually I don’t care, to me anything of value will be translated in the 
needed language (be it english) eventually, and the disadvantages is small 
and not worth the effort.

I would think differently if languages weren’t disappearing at a faster 
pace than we are registering them (and understanding them, as linguistics 
as a human science is still incomplete and unable to fully restore 
languages features), and/or if the dominant language was less horrible 
than english or french (russian, esperanto, quechua, or korean would be 
enough), so that’s partly esthetics indeed, *here*

But that’s happening anyway! and translation is a hard and difficult and 
tiresome work, so… your discourse is pretty useless I think… given the 
direction in which we are heading, I think you would be a lot more 
productive and useful if you spent all that time arguing about how we can 
totally get rid of biodiversity with that being a great thing.

> > That would be the kind of "user-friendliness", btw, that may
> > have an effective impact on making more women or minorities
> > join CS, and moreover less occidental, as that concern has
> > come more into fashion recently.
> 
> Women are already almost 100% binary

wdym?

> and they are better at
> communicating than men some would say so they would have no
> problem because of the English language to join the tech world

that reasoning is unconvincing

> As for minorities that have historically had a position of
> disadvantage the more technology and the more English to them
> the better!

this looks like “let’s get the rich richers and the poorer people will 
naturally get some more money so the inequality problem will be solved”, 
this reasoning is broken.

> PS. ha :) stop it...

that could count both ways…

PS: that trolling is becoming amusing, the caricature you are building 
could be a very efficient strawman, I’m thinking about conserving and 
pointing at that discussion later (but carefully, I don’t want to tarnish 
emacs’ reputation)



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Thibaut Verron @ 2021-07-21  7:47 UTC (permalink / raw)
  To: Alexandre Garreau; +Cc: help-gnu-emacs

> > > or have you tried to work in mandarin
> >
> > This instant, in another buffer I have a friend on IRC from
> > ROC
>
> wait what’s roc?

Either Republic of Congo or Republic of China (Taiwan), based on
context I'd say Taiwan. But afaik English is much more commonly taught
and spoken in Taiwan than in PRC.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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  8:28                   ` Christopher Dimech
  2021-07-21  8:39                     ` tomas
  2021-07-21 12:56                     ` Jean Louis
  1 sibling, 2 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21  8:28 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs


> Sent: Wednesday, July 21, 2021 at 5:24 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Thibaut Verron wrote:
>
> >> Anglo-American beat French to world dominance, accept it.
> >> It happened everywhere, including diplomacy,
> >
> > Don't diplomats have interprets?
>
> They used to speak French, now they speak English.
>
> We see traces of this in for example the Euro Vision Song
> Contest where they tell the score in English and French.
>
> But numbers don't lie, pick up a book from your bookshelf and
> have a look, find a ISBN number with 13 digits (a so-called
> ISBN-13, they start with 978- or 979 which is the GS1 prefix),
> and tell me, what is the number immediately following the
> GS1 prefix - i.e., the 4th number?
>
> Please, just deal with it and go on, this is so embarrassing
> every time it comes up :(
>
> > You've clearly never been to France. :)
>
> I've been to France, I've been to Belgium, I've met French and
> Belgian programmers, French and Belgian students, French and
> Belgian activists [1] (that has nothing to do with computers,
> even), they _all_ speak very good English! Just like you two
> guys do!
>
> > More seriously, a lot of people in China and Japan,
> > including in the software industry, do not speak English.

It would be an opportunity to civilise them.  So that one day, they can do
what the East Germans did.

> Wrong! They do, and they do even more and better for each
> year, and the very small group who don't, well, they have
> a HUGE problem that should be fixed by them putting ALL their
> efforts learning English as soon as possible - it is
> *impossible* to be a tech/science person 2021 and not knowing
> English - luckily, this isn't the case, but if there were more
> people like you translating stuff not even then could you
> ever, ever do it to any extent that would mean a positive to
> those very few who don't know English, it would be a NEGATIVE
> since they would only have access to a small fraction of the
> material available, and in the worst case they would be
> deluding themselves thinking they are so great, while actually
> living in a bubble 10 000 miles behind everyone else!
>
> Luckily this isn't the case at all - French tech people and
> French people in general have no problem whatsoever mastering
> English, they want to do it, they benefit from it, everyone
> else benefit from it, and most of all, it is the REALITY that
> we have that everyone needs to accept for their own benefit!
>
> Speak French to people on the street all you want - of course
> - but the language of science and technology 2021 is English,
> Anglo-American, and to a large extent American English (writhe
> "color" in source, not "colour", however write that in the UK
> tabloids, by all means). It _is_ English and I don't care who
> had a lousy colonial empire or not...

If you want to function in tho world, you got to learn english.
Otherwise you are on your own.  Good luck with that!

> > Translations would be very useful for them.

Then they should do it.  Or pay someone to do it.

> No, on the contrary, it would be a negative to them.
>
> > And all over the world, a lot of students who do not feel
> > confident with English treat the lack of available
> > translations as a significant hurdle, or even a barrier.

This would not solve the problem of doing real work.  Nobody
would care about that piece of software if not written in english.
I wonder how we never got any programming languages not in the
english language.  Because all those people were either living
in the United States or the United Kingdom.  Could be that the
French are still in denial in accepting such fact.  They were the
original developers and authors of computing technology.


> 100% incorrect.
>
> > Your replies in this thread strike me as unusually hostile.
> > Why is it such a big problem that some want to translate the
> > emacs help and manual?

I do not see a problem.  The problem is who would do it !

> Yes, because I've heard this so many times before, all the
> incorrect arguments, and it is bit provoking that it is ALWAYS
> the French who brings this up no matter what e-mail list or
> what tent on G8 in Rostock you are on! Every meeting, start
> with a vote which the French guys insist on (despite speaking
> English), French people propose French as the language (what
> a surprise) and then get voted down 21-4, 14-3, 45-11
> every time.
>
> Why aren't the Russian, German and so on people who are also
> part of huge language and language groups making this "French
> case" you think?
>
> Can it be that they are a bit more modest with respect to
> their own language? Or do they simply understand like everyone
> else what a huge benefit it is to them _and everyone_ with
> a common langauge for science and technology, and they are
> enthusiastic about learning this for their own
> information-input but also the ambition to give their own
> information-output?

Perhaps they cannot stand the fact that their Napoleon got
swept onto his back by the british, and then had to wait for
the british to save them from hitler.

> Which, BTW, is exactly like the French are, so why on Earth
> keep up with this charade?
>
> #@$%&!
>
> PS. ha :)
>
> [1] https://dataswamp.org/~incal/blog/index.html
>
> --
> underground experts united
> https://dataswamp.org/~incal
>
>
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21  8:28                   ` Christopher Dimech
@ 2021-07-21  8:39                     ` tomas
  2021-07-21  9:18                       ` Christopher Dimech
  2021-07-21 12:56                     ` Jean Louis
  1 sibling, 1 reply; 238+ messages in thread
From: tomas @ 2021-07-21  8:39 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 535 bytes --]

On Wed, Jul 21, 2021 at 10:28:16AM +0200, Christopher Dimech wrote:

[...]

> > > More seriously, a lot of people in China and Japan,
> > > including in the software industry, do not speak English.
> 
> It would be an opportunity to civilise them.  So that one day, they can do
> what the East Germans did.

I'd hope that to be ironic. Or is it xenophobic crap?

> If you want to function in tho world, you got to learn english.
> Otherwise you are on your own.  Good luck with that!

Such a load of nonsense. 

 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
                                         ` (2 more replies)
  0 siblings, 3 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21  8:43 UTC (permalink / raw)
  To: help-gnu-emacs

Thibaut Verron wrote:

>> They used to speak French, now they speak English.
>>
>
> I don't know what they used to speak, but nowadays they
> speak their own language afaik.

They used to speak French, that was the langauge of diplomacy,
now they speak English.

> We see the effect of this when all EU treaties are
> translated in all the official languages of the EU (which,
> luckily, still include English).

Well, they have resources to do that, and hire themselves and
each other to do the job for the right price. A lot is for
political reasons, also. But, obviously I don't know how
everything happens there, but of course the international
language is English there as well as everywhere else.

>> We see traces of this in for example the Euro Vision Song
>> Contest where they tell the score in English and French.
>
> Is that diplomacy now? :)

I think it is! It is a competition between nation and about
national pride. But it is also just a show, of course.
Commercial, monetary. Just like IIHF, too bad the French
didn't have a team this year (they play the B tournament, with
a bunch of Canadian guys, I think, so hopefully we see them
again soon).

FYI I've played ice hockey with Canadian guys from Quebec -
you know of course that they were separatists in the 70s - now
(well, this was 5-10 years ago) now these guys spoke English
in a way that was inseparable from any US or English-speaking
Canadian dude, no French accent, nothing. Reality, "man".

> Okay my bad. Might I still assume that I have met more
> French scientists and programmers than you? Most of them
> speak very broken English, and hate it.

Then it is a matter of attitude. Most Swedish people enjoy
speaking English a lot actually, and in the tech world it
makes sense as well, but even so most people get over it after
the initial love affair, of course we don't want to speak
English to countrymen we meet in the street or to our parents
(who speak good enough, sometimes excellent English, my mother
speaks good French as well BTW, and German, and Spanish, my
father's English is so-so, he speaks OK German tho, I speak
and write English fluently but not always correctly of course,
I can read French to some extent and I speak get-by Russian,
this may sound like a lot of languages everywhere but
I consider my skills at a pretty basic or low level, I didn't
score the top marks in school by any means, and if it hadn't
been for technology, education, student life, and talking like
this on Usenet/mailing lists and IRC, I don't think my English
had been on a so-so (or lower) level as well).

> I'm flattered that you take me as an example, but I speak
> and write English on a daily basis precisely because I don't
> live in France.

Yes, hah, you are allowed to speak French about technology in
France and everywhere else where you meet French-speaking
people, sweet heavens! It is just very impractical for you and
everyone else if you for example write source in French, and
you will put yourself at a huge disadvantage if you cannot
read books and source and web pages in English, and _we_ then
also cannot benefit from _you_ if you choose that path, as
I've said many times now. But you are not so no worries about
that, it is just this charade over and over, unbelievable!

> In France I was speaking 99.9% French, including at work.
> We would be writing a paper in English and discussing in
> French about which words to use.

The French students I met were 20-25 years old and they were
fluent speaking English, in a couple of years or a decade at
the most the French people will be as fluent as them, only at
15-20 instead, it is inevitable, French people are proud of
their engineering skills and everyone wants to take part of
the international world, including the French, you can pretend
to be annoyed by it all you want, as long as you still do it,
which is the case clearly, I'm fine... well, I am annoyed by
the whole charade, which the French are the only ones who do,
interestingly enough, but I know you are here anyway so it
doesn't matter really. And those who are not will come.

And a couple of generations more it will be all natural, no
one will even think about not doing it.

> And France is far from the worst place to speak English.
> Try a random Chinese or Japanese or Russian student.
> Try a random Turkish or Thai or Ivorian student.

No! Well, Thai or Ivorian students I never met but Chinese,
Japanese, Russian, and Turkish I all met, a lot, my dad even
has a house in Turkey, their technology students speak English
excellent, just fine, or are getting there, Russians in
particular are a weird bunch in this respect, ha, there are
some who refuse and some who are like Western Europe (i.e.,
very good), but it is inevitable, their education has always
been awesome and they are into everything Western, it is
inevitable that the "English-speakers" will win that battle,
and it doesn't have to take that long, these processes are all
under way sine long... (And actually it isn't a battle, the
Russians that "refuse" do that because they think they cannot,
they are in a "blocked mode", often they rely on a friend who
speaks excellent English but they themselves want to speak as
well and one forces them to speak they are happy about that
and learn very fast, if you think I'm generalizing now I am
but I've seen it so many times I know its true, ha.)

> And to be clear, it's not about the people. Some languages
> are extremely different from English (how hard is it to
> learn English from Swedish?). Some countries have extremely
> poor English teaching in lower education.

No, no, everyone is capable of learning English, some small
(or smallish) countries and language groups (e.g., Sweden, the
Netherlands, ...) has had a head start since it was so
apparently necessary for one reason, and there are other
reasons as well, but everyone else is equally and more than
capable and as we have seen with Russians and in particular
with the Germans who has had a rocket-career in this respect
it doesn't have to take that long, it will all come, so
whatever head start Sweden or other countries might have had -
well, good for us :) we were always clever merchants and
warriors at the same time :)) - but the point is that head
start for us won't mean anything sooner than we would like,
actually :)

>> Wrong! They do, and they do even more and better for each
>> year, and the very small group who don't, well, they have
>> a HUGE problem that should be fixed by them putting ALL
>> their efforts learning English as soon as possible
>
> Not realistic. Instead, they think that their English is
> good enough and will improve as they go.

Those who don't learn English will be at a disadvantage in
every aspect. People don't want that, it doesn't benefit them
or their games and it isn't fun, girls want to talk to foreign
guys and guys want to play games and watch stupid movies and
so on and so forth etc etc etc - I mean, why on Earth would
one not do that in general? And in particular a tech or
science person? I don't understand, why? The Swedish world is
small but the French world isn't big enough by far, sorry.
Deal with it...

> But learning a difficult topic will always be easier in your
> own language.

No, not with technology once you have made that step, then it
is more difficult, well, more _impractical_ I should say, to
speak about it, and in particular _write_ about it, in your
own language, actually. English is already the international
language and the language of technology and science, if you
want to be an international warrior you need this gun in your
belt as well, use only the French guns - you are gunned down,
sorry.

> Yes. But to those who know some English but for whom it
> requires effort, it would mean that they get a first contact
> with new difficult topics without language hurdles.
> They will still be able to access the complete documentation
> in English when needed.

They must and they will take the step, I'm positive, I'm 100%
convinced. Go to a party with 20 year old, as a field trip.
Go to the cutest, most intelligent girl and the guy who is
most skilled with tools and the guy who is most skilled with
sport. They ALL SPEAK ENGLISH and see no problem with it.
This decides everything already at this point!

Translating huge books is just an immense wasted effort that
also have several negative effects that I've mentioned
already. For example this book

@book{introduction-to-algorithms,
  author     = {Cormen and Leiserson and Rivest and Stein},
  edition    = {2nd edition},
  isbn       = {0-268-53196-8},
  publisher  = {MIT Press},
  title      = {Introduction to Algorithms},
  year       = {2001}
}

It is 1184 pages!

And that format (book heft) isn't uncommon!

Are you going to translate this to French because some French
guys aren't good enough English readers? This reasoning is
insane, I don't know how you get it to work in your heads,
that are rational in every other sense, including this one,
but only for your personal life and activities? Are your
compatriots that stupid? And you some kind of elite or
something? And you are gonna translate 1084 page books on
algorithms to remedy that? Ha, listen, it doesn't make any
sense any of it! Hahaha :)

>> and in the worst case they would be deluding themselves
>> thinking they are so great, while actually living in
>> a bubble 10 000 miles behind everyone else!
>
> With this kind of attitude, some of them just might.
> Talk about delusions...

But it is true, remove English from the world of technology
you can never keep up and you are restricted to work in the
fields were other people have translated stuff. French people
had I think with feudalism, right? That's what's gonna happen?
Haha :)

Native French output in terms of computers and programming and
(technology and science in general) cannot in any sense or in
any way be compared to the corresponding output in English.
Restrict yourself to French, that's the stupidest move in
anyone's personal or professional career, you just have to
deal with that reality, that doesn't work anymore -if it ever
did that world is long GONE. Gone but not forgotten, it would
seem! Hah. But know you will come and be here just as everyone
else, this recurring charade notwithstanding...

> Books get translated. Wikipedia is translated. Is it all
> negative to you?

Yes, if the explicit or implicit reason is that people are bad
at English! Of course there can be commercial, personal,
emotional etc reasons to do whatever but in terms of
technology restricting oneself to one's native language (well,
unless that's English, d'oh) that would be a huge blunder, no
one should do it and certainly not live under the illusion
that translations can make one not have to come HERE, where
the game is! You think French hockey players should only play
in the French league? NO, they should come to use here to
Sweden and Finland, where the level is ... another :)
Meanwhile WE should aim for the NHL and KHL, ha :) If enough
of them come, after their careers peak, they will not be good
enough for Sweden and Finland so they'll go back to France,
where they will bring the level up with their skills and
experience, and before you know it the French league can be
competitive with perhaps Germany, Litva, Belarus, Kazakhstan
... well, if you send A LOT of players anyway! But you will
never ever be at the level of Sweden or Finland and never ever
in a million years will the French hockey league be competitive
with NHL and the Russian Super League. So the only way you can
compete with the NHL and KHL is _in_ the NHL or KHL, and these
guys show it is indeed possible: (3 French guys in the NHL)
<https://www.quanthockey.com/nhl/nationality/active-french-nhl-players-career-stats.html>

There are 50 Swedish guys in the NHL BTW:
<https://www.quanthockey.com/nhl/nationality/active-french-nhl-players-career-stats.html>

and 50 Finnish guys:
<https://www.quanthockey.com/nhl/nationality/active-finnish-nhl-players-career-stats.html>

> Heck, *you* wrote a book in Swedish!

Please, you or anyone else get me a contract in NYC (which is
the publishing capital of the world BTW, tho the biggest
publishing house is English, Penguin, right? I think Hachette
Livre is number 2 but they also have their HQ in NYC) - you or
anyone else offer me a contract and instead of ranting here
I'd be more than happy to translate it to English or write
another book in English for that matter :) How about a book on
a tree house project?
<https://dataswamp.org/~incal/blog/index.html>
Or Elisp robotics?
<https://dataswamp.org/~incal/#terror>

>>> And all over the world, a lot of students who do not feel
>>> confident with English treat the lack of available
>>> translations as a significant hurdle, or even a barrier.
>>
>> 100% incorrect
>
> You really have no idea

I know so many people have take the step and those who don't
will be at a disadvantage, I don't think they like that so
they too will take the step, it makes sense and we see it
everywhere every day, why on Earth would it NOT happen? It is
already happening all over the world! Even here, I can go to
one of the student house quarters right now and there will be
people from all over the world - we have 42 559 students here
<https://en.wikipedia.org/wiki/Uppsala_University> - all of
them will speak excellent English, and if we ask about their
parent some will say their parents speak good English, some
so-so, and some not at all, but guess what, these people are
soon parents _themselves_, people use more and more technology
and consume more and more culture, watch movies, read
magazines, watch DIY YouTube videos how to demolish their
carbon bicycles, while trying to raise the saddle and learning
something in the process - it is inevitable. RESISTANCE IS
FUTILE!

> It's not really the same thing. Nobody asks *you* to write
> or read a manual in French or Chinese.

OF COURSE everyone is allowed to do it, I'm not going to do
anything more that write these messages, actually I'm getting
a little tired of it by now, I think I'll bookmark these 3-4
rantings the next time the French connection get their way up
to Annapurna (the first 8000+ mountain to be summited BTW, by
a French expedition, everyone gives them credit for this -
except the Swiss. why? because of langauge? can't have
a brother succeed? but Swiss mountaineering expertise is
beyond question - Mt. Everest OTOH was first summited by the
English but none of the two people reaching the top was from
England, ha, typical of them :) maybe the most difficult
mountain in the world, K2, was first summited by the Italians.
of the Polar explorers we have respect for the English
super-human efforts but there is no doubt in our minds the
best in this respect were the Norwegians.)

> But yes, I guess French diplomats make it a point to remind
> everyone that English domination should not be taken for
> granted. You can call it tradition. :)

Yep, Frenchh hangup (Frenchh = French and only French)

> But when I say that translated manuals are helpful, it's not
> part of that tradition, it's from my experience meeting and
> teaching to French students. Many of them simply do not
> bother or are blocked from learning a topic because there is
> no entry-level material in their language. That's a fact.

Manuals - maybe in the 70-80s but I'm not sure, now - harmful.

Textbooks - sure, if you have the manpower and resources and
political and individual desire to do that instead of
something more interesting, ha, but remember that
English-language university undergraduate textbooks are often
~1000 pages. They call everything before or below PhD
"Introduction" which is fun because again the books are
often >1000 pages. So if you want to translate the "intros" by
all means, do it.

And before you say it, what about the French production, which
is in French already? That is a competitive bout but not
close, and certainly not a draw. If you try to compete in that
sense you will loose. The only way for you to compete is to do
it in English like everyone else. You already do it, now you
have to 1) deal with it; and 2) do it even more, and the
French honor will be restored, despite the IT and computing
setback to the accursed Anglo-Americans...

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21  9:18 UTC (permalink / raw)
  To: tomas; +Cc: help-gnu-emacs


> Sent: Wednesday, July 21, 2021 at 8:39 PM
> From: tomas@tuxteam.de
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> On Wed, Jul 21, 2021 at 10:28:16AM +0200, Christopher Dimech wrote:
>
> [...]
>
> > > > More seriously, a lot of people in China and Japan,
> > > > including in the software industry, do not speak English.
> >
> > It would be an opportunity to civilise them.  So that one day, they can do
> > what the East Germans did.
>
> I'd hope that to be ironic. Or is it xenophobic crap?

People in Hong Kong and Taiwan would have something to say about that.
China has been doing things in a brutal manner.  As they get out of
poverty, they will rebel and trash communism.

> > If you want to function in tho world, you got to learn english.
> > Otherwise you are on your own.  Good luck with that!
>
> Such a load of nonsense.

If you want to really see truly fantastic children with great aspirations
anywhere, you must see those that have a mastery of the english language.
Particularly if the focus is to grow the human body and the human brain
to its full potential, without any intention of what they will become.



>  - t
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21  9:45 UTC (permalink / raw)
  To: help-gnu-emacs

Alexandre Garreau wrote:

> you've been mostly with educated people, not with people who
> struggle learning, or are in less educated portion
> of society.

But the case is people don't know it good enough!

You guys on the other hand know it so well you can even do
professional translations...

So you, the Elysium ones, will attempt to help the ignorant
masses by translating ... uhm, CS and programming software
manuals?!

Hey, just a suggestion, shouldn't you elite guys instead try
to bring literacy, basic math, and punctuality, to your poor
countrymen that cannot read English 2021?

Hahah THE FRENCH, the guys with the French Revolution, the
Enlightenment Movement, the Paris Commune, even the supersonic
airliner the Concorde :) HAHAHAH :D

OKAY I know this isn't what you mean because it doesn't make
any sense whatsoever, but it is how it sounds, I still don't
understand what you actually mean TBH ???

>> Which, BTW, is exactly like the French are, so why on Earth
>> keep up with this charade?
>
> good question, do you think they’re aren’t the same french?
> what are the sociological differences you noticed between
> each groups?

The French were probably used to everyone speaking French and
if there was a foreigner around either it was an international
guy who spoke French or some other type of international guy,
namely from the French colonial empire, and everyone loved and
spoke great beautiful and cultural French and there was never
any other annoying other language around to mess up this
orderly and fantastic state that everyone was happy with?

No, I don't know actually, but that would be one guess that
comes to hand, yes. So, if you don't want it to, yeah, stop
brining this up, is what I'd do.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21  9:59 UTC (permalink / raw)
  To: help-gnu-emacs

Thibaut Verron wrote:

>>>> or have you tried to work in mandarin
>>>
>>> This instant, in another buffer I have a friend on IRC
>>> from ROC
>>
>> wait what’s roc?
>
> Either Republic of Congo or Republic of China (Taiwan),
> based on context I'd say Taiwan. But afaik English is much
> more commonly taught and spoken in Taiwan than in PRC.

I guess it depends who you ask if Taiwan is China or not :)

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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 13:01                       ` Jean Louis
  2021-07-22 17:32                       ` Yuri Khan
  2 siblings, 2 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 10:04 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs

> Sent: Wednesday, July 21, 2021 at 8:43 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Thibaut Verron wrote:
>
> >> They used to speak French, now they speak English.
> >>
> >
> > I don't know what they used to speak, but nowadays they
> > speak their own language afaik.
>
> They used to speak French, that was the langauge of diplomacy,
> now they speak English.
>
> > We see the effect of this when all EU treaties are
> > translated in all the official languages of the EU (which,
> > luckily, still include English).
>
> Well, they have resources to do that, and hire themselves and
> each other to do the job for the right price. A lot is for
> political reasons, also. But, obviously I don't know how
> everything happens there, but of course the international
> language is English there as well as everywhere else.
>
> >> We see traces of this in for example the Euro Vision Song
> >> Contest where they tell the score in English and French.
> >
> > Is that diplomacy now? :)
>
> I think it is! It is a competition between nation and about
> national pride.

All this focus on identification with a nation must go away.
Particularly in a today's market economy (capitalism is long gone).

After the collapse of the berlin wall, many thought about freedom,
but all we got since then has been more borders and isolation.
A dystopian reality rather than an opportunity for exploration
and seeking.

> But it is also just a show, of course.
> Commercial, monetary. Just like IIHF, too bad the French
> didn't have a team this year (they play the B tournament, with
> a bunch of Canadian guys, I think, so hopefully we see them
> again soon).
>
> FYI I've played ice hockey with Canadian guys from Quebec -
> you know of course that they were separatists in the 70s - now
> (well, this was 5-10 years ago) now these guys spoke English
> in a way that was inseparable from any US or English-speaking
> Canadian dude, no French accent, nothing. Reality, "man".
>
> > Okay my bad. Might I still assume that I have met more
> > French scientists and programmers than you? Most of them
> > speak very broken English, and hate it.
>
> Then it is a matter of attitude. Most Swedish people enjoy
> speaking English a lot actually, and in the tech world it
> makes sense as well, but even so most people get over it after
> the initial love affair, of course we don't want to speak
> English to countrymen we meet in the street or to our parents
> (who speak good enough, sometimes excellent English, my mother
> speaks good French as well BTW, and German, and Spanish, my
> father's English is so-so, he speaks OK German tho, I speak
> and write English fluently but not always correctly of course,
> I can read French to some extent and I speak get-by Russian,
> this may sound like a lot of languages everywhere but
> I consider my skills at a pretty basic or low level, I didn't
> score the top marks in school by any means, and if it hadn't
> been for technology, education, student life, and talking like
> this on Usenet/mailing lists and IRC, I don't think my English
> had been on a so-so (or lower) level as well).

I also speak many languages.

> > I'm flattered that you take me as an example, but I speak
> > and write English on a daily basis precisely because I don't
> > live in France.
>
> Yes, hah, you are allowed to speak French about technology in
> France and everywhere else where you meet French-speaking
> people, sweet heavens! It is just very impractical for you and
> everyone else if you for example write source in French, and
> you will put yourself at a huge disadvantage if you cannot
> read books and source and web pages in English, and _we_ then
> also cannot benefit from _you_ if you choose that path, as
> I've said many times now. But you are not so no worries about
> that, it is just this charade over and over, unbelievable!

The biggest problem today is people identifying with this and that.

> > In France I was speaking 99.9% French, including at work.
> > We would be writing a paper in English and discussing in
> > French about which words to use.

I did part of my education in France.  And was respected for my capabilities.
Same happened in England, Spain, Russia.  When I wanted to get a piece of meat
I spoke spanish in spain.

> The French students I met were 20-25 years old and they were
> fluent speaking English, in a couple of years or a decade at
> the most the French people will be as fluent as them, only at
> 15-20 instead, it is inevitable, French people are proud of
> their engineering skills and everyone wants to take part of
> the international world, including the French, you can pretend
> to be annoyed by it all you want, as long as you still do it,
> which is the case clearly, I'm fine... well, I am annoyed by
> the whole charade, which the French are the only ones who do,
> interestingly enough, but I know you are here anyway so it
> doesn't matter really. And those who are not will come.
>
> And a couple of generations more it will be all natural, no
> one will even think about not doing it.
>
> > And France is far from the worst place to speak English.
> > Try a random Chinese or Japanese or Russian student.
> > Try a random Turkish or Thai or Ivorian student.
>
> No! Well, Thai or Ivorian students I never met but Chinese,
> Japanese, Russian, and Turkish I all met, a lot, my dad even
> has a house in Turkey, their technology students speak English
> excellent, just fine, or are getting there, Russians in
> particular are a weird bunch in this respect, ha, there are
> some who refuse and some who are like Western Europe (i.e.,
> very good), but it is inevitable, their education has always
> been awesome and they are into everything Western, it is
> inevitable that the "English-speakers" will win that battle,
> and it doesn't have to take that long, these processes are all
> under way sine long... (And actually it isn't a battle, the
> Russians that "refuse" do that because they think they cannot,
> they are in a "blocked mode", often they rely on a friend who
> speaks excellent English but they themselves want to speak as
> well and one forces them to speak they are happy about that
> and learn very fast, if you think I'm generalizing now I am
> but I've seen it so many times I know its true, ha.)
>
> > And to be clear, it's not about the people. Some languages
> > are extremely different from English (how hard is it to
> > learn English from Swedish?). Some countries have extremely
> > poor English teaching in lower education.
>
> No, no, everyone is capable of learning English, some small
> (or smallish) countries and language groups (e.g., Sweden, the
> Netherlands, ...) has had a head start since it was so
> apparently necessary for one reason, and there are other
> reasons as well, but everyone else is equally and more than
> capable and as we have seen with Russians and in particular
> with the Germans who has had a rocket-career in this respect
> it doesn't have to take that long, it will all come, so
> whatever head start Sweden or other countries might have had -
> well, good for us :) we were always clever merchants and
> warriors at the same time :)) - but the point is that head
> start for us won't mean anything sooner than we would like,
> actually :)
>
> >> Wrong! They do, and they do even more and better for each
> >> year, and the very small group who don't, well, they have
> >> a HUGE problem that should be fixed by them putting ALL
> >> their efforts learning English as soon as possible
> >
> > Not realistic. Instead, they think that their English is
> > good enough and will improve as they go.
>
> Those who don't learn English will be at a disadvantage in
> every aspect. People don't want that, it doesn't benefit them
> or their games and it isn't fun, girls want to talk to foreign
> guys and guys want to play games and watch stupid movies and
> so on and so forth etc etc etc - I mean, why on Earth would
> one not do that in general? And in particular a tech or
> science person? I don't understand, why? The Swedish world is
> small but the French world isn't big enough by far, sorry.
> Deal with it...
>
> > But learning a difficult topic will always be easier in your
> > own language.

Should there not be enough people in france to do translations in french
if need be.  Which means they see value in what  non-french people write.
People can argue how much they want, but one cannot force other to read
your stuff if they don't want to.


> No, not with technology once you have made that step, then it
> is more difficult, well, more _impractical_ I should say, to
> speak about it, and in particular _write_ about it, in your
> own language, actually. English is already the international
> language and the language of technology and science, if you
> want to be an international warrior you need this gun in your
> belt as well, use only the French guns - you are gunned down,
> sorry.
>
> > Yes. But to those who know some English but for whom it
> > requires effort, it would mean that they get a first contact
> > with new difficult topics without language hurdles.
> > They will still be able to access the complete documentation
> > in English when needed.
>
> They must and they will take the step, I'm positive, I'm 100%
> convinced. Go to a party with 20 year old, as a field trip.
> Go to the cutest, most intelligent girl and the guy who is
> most skilled with tools and the guy who is most skilled with
> sport. They ALL SPEAK ENGLISH and see no problem with it.
> This decides everything already at this point!

Local languages were useful at a time where people stayed and
functioned within their community.  It worked as a support
system.  If something terrible happened in your life, you could
go back to your clan and they would accept you and help you.

> Translating huge books is just an immense wasted effort that
> also have several negative effects that I've mentioned
> already. For example this book
>
> @book{introduction-to-algorithms,
>   author     = {Cormen and Leiserson and Rivest and Stein},
>   edition    = {2nd edition},
>   isbn       = {0-268-53196-8},
>   publisher  = {MIT Press},
>   title      = {Introduction to Algorithms},
>   year       = {2001}
> }
>
> It is 1184 pages!
>
> And that format (book heft) isn't uncommon!

Perhaps one day artificial intelligence could do it.  That would
make great possibilities.

I have read articles in french, spanish, portugese.  If those writings
are valuable to you, you will put the effort to learn or get a translation.

You can learn one or two languages pretty well to write, but beyond that,
becomes too much work and people usually have a quite limited life-span
if you have big aspirations.

> Are you going to translate this to French because some French
> guys aren't good enough English readers? This reasoning is
> insane, I don't know how you get it to work in your heads,
> that are rational in every other sense, including this one,
> but only for your personal life and activities? Are your
> compatriots that stupid? And you some kind of elite or
> something? And you are gonna translate 1084 page books on
> algorithms to remedy that? Ha, listen, it doesn't make any
> sense any of it! Hahaha :)

There is a group of mathematicians, called the Bourbaki Group, originally intended
to make a textbook in analysis.  Eventually became a group french mathematical
purists that became too rigid in their approach.  Applied mathematicians consider
the approach too restrictive in solving current problems of computation.

> >> and in the worst case they would be deluding themselves
> >> thinking they are so great, while actually living in
> >> a bubble 10 000 miles behind everyone else!
> >
> > With this kind of attitude, some of them just might.
> > Talk about delusions...
>
> But it is true, remove English from the world of technology
> you can never keep up and you are restricted to work in the
> fields were other people have translated stuff. French people
> had I think with feudalism, right? That's what's gonna happen?
> Haha :)
>
> Native French output in terms of computers and programming and
> (technology and science in general) cannot in any sense or in
> any way be compared to the corresponding output in English.
> Restrict yourself to French, that's the stupidest move in
> anyone's personal or professional career, you just have to
> deal with that reality, that doesn't work anymore -if it ever
> did that world is long GONE. Gone but not forgotten, it would
> seem! Hah. But know you will come and be here just as everyone
> else, this recurring charade notwithstanding...
>
> > Books get translated. Wikipedia is translated. Is it all
> > negative to you?
>
> Yes, if the explicit or implicit reason is that people are bad
> at English! Of course there can be commercial, personal,
> emotional etc reasons to do whatever but in terms of
> technology restricting oneself to one's native language (well,
> unless that's English, d'oh) that would be a huge blunder, no
> one should do it and certainly not live under the illusion
> that translations can make one not have to come HERE, where
> the game is! You think French hockey players should only play
> in the French league? NO, they should come to use here to
> Sweden and Finland, where the level is ... another :)
> Meanwhile WE should aim for the NHL and KHL, ha :) If enough
> of them come, after their careers peak, they will not be good
> enough for Sweden and Finland so they'll go back to France,
> where they will bring the level up with their skills and
> experience, and before you know it the French league can be
> competitive with perhaps Germany, Litva, Belarus, Kazakhstan
> ... well, if you send A LOT of players anyway! But you will
> never ever be at the level of Sweden or Finland and never ever
> in a million years will the French hockey league be competitive
> with NHL and the Russian Super League. So the only way you can
> compete with the NHL and KHL is _in_ the NHL or KHL, and these
> guys show it is indeed possible: (3 French guys in the NHL)
> <https://www.quanthockey.com/nhl/nationality/active-french-nhl-players-career-stats.html>
>
> There are 50 Swedish guys in the NHL BTW:
> <https://www.quanthockey.com/nhl/nationality/active-french-nhl-players-career-stats.html>
>
> and 50 Finnish guys:
> <https://www.quanthockey.com/nhl/nationality/active-finnish-nhl-players-career-stats.html>
>
> > Heck, *you* wrote a book in Swedish!
>
> Please, you or anyone else get me a contract in NYC (which is
> the publishing capital of the world BTW, tho the biggest
> publishing house is English, Penguin, right? I think Hachette
> Livre is number 2 but they also have their HQ in NYC) - you or
> anyone else offer me a contract and instead of ranting here
> I'd be more than happy to translate it to English or write
> another book in English for that matter :) How about a book on
> a tree house project?
> <https://dataswamp.org/~incal/blog/index.html>
> Or Elisp robotics?
> <https://dataswamp.org/~incal/#terror>
>
> >>> And all over the world, a lot of students who do not feel
> >>> confident with English treat the lack of available
> >>> translations as a significant hurdle, or even a barrier.
> >>
> >> 100% incorrect
> >
> > You really have no idea
>
> I know so many people have take the step and those who don't
> will be at a disadvantage, I don't think they like that so
> they too will take the step, it makes sense and we see it
> everywhere every day, why on Earth would it NOT happen? It is
> already happening all over the world! Even here, I can go to
> one of the student house quarters right now and there will be
> people from all over the world - we have 42 559 students here
> <https://en.wikipedia.org/wiki/Uppsala_University> - all of
> them will speak excellent English, and if we ask about their
> parent some will say their parents speak good English, some
> so-so, and some not at all, but guess what, these people are
> soon parents _themselves_, people use more and more technology
> and consume more and more culture, watch movies, read
> magazines, watch DIY YouTube videos how to demolish their
> carbon bicycles, while trying to raise the saddle and learning
> something in the process - it is inevitable. RESISTANCE IS
> FUTILE!
>
> > It's not really the same thing. Nobody asks *you* to write
> > or read a manual in French or Chinese.
>
> OF COURSE everyone is allowed to do it, I'm not going to do
> anything more that write these messages, actually I'm getting
> a little tired of it by now, I think I'll bookmark these 3-4
> rantings the next time the French connection get their way up
> to Annapurna (the first 8000+ mountain to be summited BTW, by
> a French expedition, everyone gives them credit for this -
> except the Swiss. why? because of langauge? can't have
> a brother succeed? but Swiss mountaineering expertise is
> beyond question - Mt. Everest OTOH was first summited by the
> English but none of the two people reaching the top was from
> England, ha, typical of them :) maybe the most difficult
> mountain in the world, K2, was first summited by the Italians.
> of the Polar explorers we have respect for the English
> super-human efforts but there is no doubt in our minds the
> best in this respect were the Norwegians.)
>
> > But yes, I guess French diplomats make it a point to remind
> > everyone that English domination should not be taken for
> > granted. You can call it tradition. :)
>
> Yep, Frenchh hangup (Frenchh = French and only French)
>
> > But when I say that translated manuals are helpful, it's not
> > part of that tradition, it's from my experience meeting and
> > teaching to French students. Many of them simply do not
> > bother or are blocked from learning a topic because there is
> > no entry-level material in their language. That's a fact.
>
> Manuals - maybe in the 70-80s but I'm not sure, now - harmful.
>
> Textbooks - sure, if you have the manpower and resources and
> political and individual desire to do that instead of
> something more interesting, ha, but remember that
> English-language university undergraduate textbooks are often
> ~1000 pages. They call everything before or below PhD
> "Introduction" which is fun because again the books are
> often >1000 pages. So if you want to translate the "intros" by
> all means, do it.
>
> And before you say it, what about the French production, which
> is in French already? That is a competitive bout but not
> close, and certainly not a draw. If you try to compete in that
> sense you will loose. The only way for you to compete is to do
> it in English like everyone else. You already do it, now you
> have to 1) deal with it; and 2) do it even more, and the
> French honor will be restored, despite the IT and computing
> setback to the accursed Anglo-Americans...

Perelman could have written in russian, but who would have read
them ! The most important people working in the field were american
or british.  And we all think highly of Grisha.

> --
> underground experts united
> https://dataswamp.org/~incal
>
>
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21 10:04                       ` Christopher Dimech
@ 2021-07-21 10:14                         ` tomas
  2021-07-21 10:34                         ` Alexandre Garreau
  1 sibling, 0 replies; 238+ messages in thread
From: tomas @ 2021-07-21 10:14 UTC (permalink / raw)
  To: Christopher Dimech; +Cc: help-gnu-emacs, moasenwood

[-- Attachment #1: Type: text/plain, Size: 452 bytes --]

On Wed, Jul 21, 2021 at 12:04:59PM +0200, Christopher Dimech wrote:
> > Sent: Wednesday, July 21, 2021 at 8:43 PM
> > From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>

[...]

> > > Is that diplomacy now? :)
> >
> > I think it is! It is a competition between nation and about
> > national pride.

Hey, folks -- could you be so nice to take that to emacs-tangents?
That's what it is for, after all.

Cheers
 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 10:16 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs


> Sent: Wednesday, July 21, 2021 at 9:45 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Alexandre Garreau wrote:
> 
> > you've been mostly with educated people, not with people who
> > struggle learning, or are in less educated portion
> > of society.
> 
> But the case is people don't know it good enough!
> 
> You guys on the other hand know it so well you can even do
> professional translations...
> 
> So you, the Elysium ones, will attempt to help the ignorant
> masses by translating ... uhm, CS and programming software
> manuals?!
> 
> Hey, just a suggestion, shouldn't you elite guys instead try
> to bring literacy, basic math, and punctuality, to your poor
> countrymen that cannot read English 2021?

Should not local schools do that?

I can function in one or two languages, but still not under any obligation
to bring literacy and mathematical expression.  I can certainly bring clarity
but I mostly do it in english.  If one wants to be a disciple of a guru, one
has to go beyond one's limitations, rather than expecting the guru to sustain
their ego. 
 
> Hahah THE FRENCH, the guys with the French Revolution, the
> Enlightenment Movement, the Paris Commune, even the supersonic
> airliner the Concorde :) HAHAHAH :D
> 
> OKAY I know this isn't what you mean because it doesn't make
> any sense whatsoever, but it is how it sounds, I still don't
> understand what you actually mean TBH ???
> 
> >> Which, BTW, is exactly like the French are, so why on Earth
> >> keep up with this charade?
> >
> > good question, do you think they’re aren’t the same french?
> > what are the sociological differences you noticed between
> > each groups?
> 
> The French were probably used to everyone speaking French and
> if there was a foreigner around either it was an international
> guy who spoke French or some other type of international guy,
> namely from the French colonial empire, and everyone loved and
> spoke great beautiful and cultural French and there was never
> any other annoying other language around to mess up this
> orderly and fantastic state that everyone was happy with?
> 
> No, I don't know actually, but that would be one guess that
> comes to hand, yes. So, if you don't want it to, yeah, stop
> brining this up, is what I'd do.
> 
> -- 
> underground experts united
> https://dataswamp.org/~incal
> 
> 
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 10:28 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs

> Sent: Wednesday, July 21, 2021 at 9:59 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Thibaut Verron wrote:
> 
> >>>> or have you tried to work in mandarin
> >>>
> >>> This instant, in another buffer I have a friend on IRC
> >>> from ROC
> >>
> >> wait what’s roc?
> >
> > Either Republic of Congo or Republic of China (Taiwan),
> > based on context I'd say Taiwan. But afaik English is much
> > more commonly taught and spoken in Taiwan than in PRC.
> 
> I guess it depends who you ask if Taiwan is China or not :)

People in Taiwan are chinese who rejected the intrusion of the chinese 
communist party, which trampled chinese culture with brutal communist
ideology.

Taiwan is mostly a rugged mountain landscape, not the well behaved alluvial
plains you get in China.  May China become more like Taiwan.
 
> -- 
> underground experts united
> https://dataswamp.org/~incal
> 
> 
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-21 10:34 UTC (permalink / raw)
  To: help-gnu-emacs

Emanuel, you talk a lot about competition and restriction, I’m skimming 
anything about nationalism (that’s getting wayyyy too irrelevant):

you say “why would people put themselves at disadvantage” while not 
everyone lives with unique main purpose to be “the best”, and not doing an 
effort to be above some level is not “purposedly putting oneself at 
disadvantage”.

you say restricting oneself to a non-english language is stupid hence 
translating from english is stupid, but as we already said, many people 
*already speak english* and yet prefer to read in their native language, 
and yet a book in english might be a barrieer.  A ~1000 pages book might 
be considered difficult to begin with, if it’s in the native language it 
will be deemed a lot easier.  Same for manuals, references, etc.

On the other hand, speaking and reading are two very different activity, 
with different phrasing, and different difficulty.  You could easily speak 
english if that’s the only solution available, you could easily write in 
it, that’s still easy, since it comes from your brain… but reading in it 
is going to require more cognitive load than reading in one’s native 
language.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 10:52 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

> If you want to really see truly fantastic children with
> great aspirations anywhere, you must see those that have
> a mastery of the english language.

Well, let's not hit the biggest drum perhaps, but _yes_,
that's correct. It is breathtaking to behold actually, the
next generation, and the one after that... so much talent and
confidence everywhere :O

I personally always thought the old-schoolers were cooler but
maybe that was just my personality, watching some of the kids
and youngsters today, it feels like there is no limit to what
they can do, the sky is the limit, if any, and they know it
(many of them) ...

Pretty soon everyone that excels ever so slightly in almost
any field, including fields we don't know about today because
they are still embryonic or doesn't even exist yet, these
people will have the English language as just another ace in
their coat arm, and they won't even think about it or ever
hesitate to use it in any from, spoken, written, it will just
be there and taken for granted and instead they will focus on
doing amazing things where English will be just one of their
many assets...

These people will come from all over the world.
The traditionally rich countries have a head start, a little
edge if you will, maybe that will be so for the foreseeable
future but again, there is so much talent everywhere whoever
relies on that edge alone is "ute i ogjort väder" :)

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21 10:34                         ` Alexandre Garreau
@ 2021-07-21 11:16                           ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 11:16 UTC (permalink / raw)
  To: help-gnu-emacs

Alexandre Garreau wrote:

> you say “why would people put themselves at disadvantage”
> while not everyone lives with unique main purpose to be “the
> best”, and not doing an effort to be above some level is not
> “purposedly putting oneself at disadvantage”.

Ah, "the best", you don't have to aim for that to be
benefited, but if you aim for at least one of the better
versions of yourself, that's honorable! When I was healthy
physically and mentally, I aimed for the say top 5% best
version of myself, now I have both been forced and learned to
take life less seriously, so say I now aim for a top 20%
version of myself or something like that, It is just a digit;
but yes, let me say this, if we are talking young people and
young adults in an education and/or technology setting, most
definitely they should do as I and aim for the top 5% of
themselves or even higher if that's their inclination,
absolutely, and if they find people to compete with in
a healthy and balanced way - I mean, it doesn't matter what
I say, this is already what happens everywhere anyway - GO FOR
IT, and most definitely their ambitions should include
mastering English good enough for all practical purposes and
situations they will encounter in their careers as
practitioners, craftsmen, athletes, family members, all of it,
human beings! People are certainly not perfect and that
includes me but I did at least some good things, that said I'm
confident the generations younger than me will beat me without
any super-human effort from their part :)

> you say restricting oneself to a non-english language is
> stupid hence translating from english is stupid, but as we
> already said, many people *already speak english* and yet
> prefer to read in their native language, and yet a book in
> english might be a barrieer. A ~1000 pages book might be
> considered difficult to begin with, if it’s in the native
> language it will be deemed a lot easier. Same for manuals,
> references, etc.

But how long will it take to translate it? How much money and
how many man hours, how much skill? Why waste it on something
that will help a very small group of people, and then only
marginally (it's debatable, if they are benefited even, as
said)? All this to offer something that is already there in
its original, intended form and will take what, 1-2 years to
translate, typeset, print, ship? Something that the proposed
audience could just grab without delay and with nothing "lost
in translation", literally, if they would just master English?
Which they should do anyway if they have any ambitions in
a field where English is so dominant, actually even more so
than everywhere else, where English happens to also be
completely dominant? Does this make any sense to you?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 11:49 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

> People in Taiwan are chinese who rejected the intrusion of
> the chinese communist party, which trampled chinese culture
> with brutal communist ideology.

Well, yeah, it was an extremely bloody revolution and
decade-long civil war that laid waste to the country, the
loosing Nationalist side escaped to Taiwan because they lost,
since then the mainland China Communist regime has been
claiming they want Taiwan back but actually they are happy
that ROC brings money and expertise to the Chinese people that
actually benefits them as well, indirectly and thru various
mazes, but in time yes and they know it; and they are also
happy to have a remote enemy (which is protected by the US) so
they can drum up nationalism and spend money on their
so-called People's Liberation Army (well, "once" perhaps is
the word, again depending on who you ask). This army actually
beat the US at least to some extent in the Korean War (mainly
because of a huge advantage in numbers, which is nothing to be
ashamed of BTW, on the contrary it is an excellent way of
winning wars that almost _never_ fails) - well, anyway they
partly beat the US and _in the 50s_ at that, that was as you
know the US time in world history if ever there was one, and
you don't do that without popular support - anyway now the
Communist ideology and society have left many traces thruout
Chinese society but that's it, on the whole it's just another
form of capitalism or market economy competition between
people and companies and various groups within the ruling
burocratic superstructure (well, they have a tradition of that
so maybe its their way, heck do I know, remember that in
Imperial China the elite DIDN'T rule as one may think, instead
ruling was done by a super-educated bureaucracy), it isn't
like anywhere else exactly, their own brand of it, but still.
Taiwan was once the workshop of the world, then that position
went on to China and Taiwan moved on to the most advanced
stuff, like instead of doing combination wrenches (spanners)
they did torque wrenches, and of course inevitably China will
travel the same path and they already do all kinds of advanced
consumer goods (e.g., my supposedly/actually (?) Japanese
power tools from Ryobi [pronounced "ióbi"] and Hitachi
["stási"] and Casio ["cásio"] wrist watch, all that made in
the RRC since forever, almost), and they are also innovative,
not on the "old Asia", Europe, or US level per capita but in
absolute numbers they are more than competitive, the only area
where China isn't a superpower is actually, surprisingly, the
military one, where they are out-scooped by both the US and
Russia - contrast this to Russia who is a superpower in one
and only one sense - the awesome and enormous might of its
military establishment: the army (undisputed #1 in the world),
the navy, the air force - including not the least the defense
industry, basically the only Russian smash hit (no pun
intended) on the international market save for natural
resources that is good by all means but it makes them
a regional power perhaps, certainly not a superpower from that
alone, and to be honest their skills on the individual, human
level - yeah, it is a poor state, they shouldn't stay at that
level with all the human talent they have in such a huge
country...

So step one for Russia and China to step up their game

                       *drumroll*

                        *fanfare*

you guessed it, inprove their English skills, in particular
among the educated or to-be educated youth and young adults.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  2021-07-21 10:52                         ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-07-21 11:53                           ` Christopher Dimech
  0 siblings, 0 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 11:53 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs


> Sent: Wednesday, July 21, 2021 at 10:52 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Christopher Dimech wrote:
> 
> > If you want to really see truly fantastic children with
> > great aspirations anywhere, you must see those that have
> > a mastery of the english language.
> 
> Well, let's not hit the biggest drum perhaps, but _yes_,
> that's correct. It is breathtaking to behold actually, the
> next generation, and the one after that... so much talent and
> confidence everywhere :O
> 
> I personally always thought the old-schoolers were cooler but
> maybe that was just my personality, watching some of the kids
> and youngsters today, it feels like there is no limit to what
> they can do, the sky is the limit, if any, and they know it
> (many of them) ...

It is my hope and my blessing that they would do much better things 
than we would do.
 
> Pretty soon everyone that excels ever so slightly in almost
> any field, including fields we don't know about today because
> they are still embryonic or doesn't even exist yet, these
> people will have the English language as just another ace in
> their coat arm, and they won't even think about it or ever
> hesitate to use it in any from, spoken, written, it will just
> be there and taken for granted and instead they will focus on
> doing amazing things where English will be just one of their
> many assets...
> 
> These people will come from all over the world.
> The traditionally rich countries have a head start, a little
> edge if you will, maybe that will be so for the foreseeable
> future but again, there is so much talent everywhere whoever
> relies on that edge alone is "ute i ogjort väder" :)

What has to happen is to liberate publishing.  To get all published
works on their computer and do searches with artificial intelligence.

But governments don't want that.  Governments only want research organisations
approved by them to extract information from data mining algorithms.
Of course the restrictions would not apply to them, as we are currently
being enlightened by the recent revelations of the Pegasus Project.  

Citizens all across the world must unite to end corporate and state surveillance,
whilst bringing data mining capabilities possible for citizens.

 
> -- 
> underground experts united
> https://dataswamp.org/~incal
> 
> 
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 12:08 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

>>> you've been mostly with educated people, not with people
>>> who struggle learning, or are in less educated portion
>>> of society.
>> 
>> But the case is people don't know it good enough!
>> 
>> You guys on the other hand know it so well you can even do
>> professional translations...
>> 
>> So you, the Elysium ones, will attempt to help the ignorant
>> masses by translating ... uhm, CS and programming software
>> manuals?!
>> 
>> Hey, just a suggestion, shouldn't you elite guys instead
>> try to bring literacy, basic math, and punctuality, to your
>> poor countrymen that cannot read English 2021?
>
> Should not local schools do that?

Of course. The schools, the societies.

Speaking frankly, our French Emacs guys should do their
professions to the ever improving best of their abilities, and
when that is done ... uhm, there is something that comes to
mind ... their families? unsure, does that make sense?

If they have ANY time left after that there is one and only
one allowed activity: Emacs and Elisp.

Translate huge books from English to French? Oh no, can't
have that. Nop-e. 403 Forbidden. Is what it is!

Possible loophole: What if they use Emacs while translating?
Allowed, but only if they spend at least 50% of the time not
actually translating but instead working on perfecting the
Elisp CAT software and associated English-French database (and
French-English for that matter, we just reverse the lists and
transpose the matrixes). This is how far I got BTW, and there
is more on that from the people on this list...

  https://dataswamp.org/~incal/emacs-init/ecat-incal.el

Please use it as a ... head start!

I think this is an area where FOSS and GNU/Linux (BSD etc) and
Emacs is a little bit behind, so if you guys can put us on the
top there just like with Gnus for mail we are, inspired by the
ideology of techno-totalitarianism perhaps, willing to grant
certain favors and exceptions, to show our appreciation.
Maybe a compromise, can you write the manual simultaneously in
several languages, in English _and_ French for example?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21 12:08                         ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-07-21 12:36                           ` Alexandre Garreau
  0 siblings, 0 replies; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-21 12:36 UTC (permalink / raw)
  To: help-gnu-emacs

Le mercredi 21 juillet 2021, 14:08:13 CEST Emanuel Berg via Users list for 
the GNU Emacs text editor a écrit :
> Possible loophole: What if they use Emacs while translating?

of cooourse, what else? haha

first form of encouragement, that’s good

> Allowed, but only if they spend at least 50% of the time not
> actually translating but instead working on perfecting the
> Elisp CAT software and associated English-French database (and
> French-English for that matter, we just reverse the lists and
> transpose the matrixes). This is how far I got BTW, and there
> is more on that from the people on this list...

the mapping aren’t bijective… actually nor injective nor surjective, I 
mean there is no perfect mapping from one language to another :/ and 
french is particularely nasty in that it tends to *very* quickly develop 
false friends, especially wrt english (it’s pretty astounishing O.o)

>   https://dataswamp.org/~incal/emacs-init/ecat-incal.el
> 
> Please use it as a ... head start!
> 
> I think this is an area where FOSS and GNU/Linux (BSD etc) and
> Emacs is a little bit behind, so if you guys can put us on the
> top there just like with Gnus for mail we are, inspired by the
> ideology of techno-totalitarianism perhaps, willing to grant
> certain favors and exceptions, to show our appreciation.
> Maybe a compromise, can you write the manual simultaneously in
> several languages, in English _and_ French for example?

would be cool…



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 12:44 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs


> Sent: Wednesday, July 21, 2021 at 11:49 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Christopher Dimech wrote:
> 
> > People in Taiwan are chinese who rejected the intrusion of
> > the chinese communist party, which trampled chinese culture
> > with brutal communist ideology.
> 
> Well, yeah, it was an extremely bloody revolution and
> decade-long civil war that laid waste to the country, the
> loosing Nationalist side escaped to Taiwan because they lost,

They have not lost, they are keeping chinese culture and traditions alive.

> since then the mainland China Communist regime has been
> claiming they want Taiwan back but actually they are happy
> that ROC brings money and expertise to the Chinese people that
> actually benefits them as well, indirectly and thru various
> mazes, but in time yes and they know it; and they are also
> happy to have a remote enemy (which is protected by the US) so
> they can drum up nationalism and spend money on their
> so-called People's Liberation Army (well, "once" perhaps is
> the word, again depending on who you ask). This army actually
> beat the US at least to some extent in the Korean War (mainly
> because of a huge advantage in numbers, which is nothing to be
> ashamed of BTW, on the contrary it is an excellent way of
> winning wars that almost _never_ fails) - well, anyway they
> partly beat the US and _in the 50s_ at that, that was as you
> know the US time in world history if ever there was one, and
> you don't do that without popular support - anyway now the
> Communist ideology and society have left many traces thruout
> Chinese society but that's it, on the whole it's just another
> form of capitalism or market economy competition between
> people and companies and various groups within the ruling
> burocratic superstructure (well, they have a tradition of that
> so maybe its their way, heck do I know, remember that in
> Imperial China the elite DIDN'T rule as one may think, instead
> ruling was done by a super-educated bureaucracy), it isn't
> like anywhere else exactly, their own brand of it, but still.
> Taiwan was once the workshop of the world, then that position
> went on to China and Taiwan moved on to the most advanced
> stuff, like instead of doing combination wrenches (spanners)
> they did torque wrenches, and of course inevitably China will
> travel the same path and they already do all kinds of advanced
> consumer goods (e.g., my supposedly/actually (?) Japanese
> power tools from Ryobi [pronounced "ióbi"] and Hitachi
> ["stási"] and Casio ["cásio"] wrist watch, all that made in
> the RRC since forever, almost), and they are also innovative,
> not on the "old Asia", Europe, or US level per capita but in
> absolute numbers they are more than competitive, the only area
> where China isn't a superpower is actually, surprisingly, the
> military one, where they are out-scooped by both the US and
> Russia - contrast this to Russia who is a superpower in one
> and only one sense - the awesome and enormous might of its
> military establishment: the army (undisputed #1 in the world),
> the navy, the air force - including not the least the defense
> industry, basically the only Russian smash hit (no pun
> intended) on the international market save for natural
> resources that is good by all means but it makes them
> a regional power perhaps, certainly not a superpower from that
> alone, and to be honest their skills on the individual, human
> level - yeah, it is a poor state, they shouldn't stay at that
> level with all the human talent they have in such a huge
> country...
> 
> So step one for Russia and China to step up their game
> 
>                        *drumroll*
> 
>                         *fanfare*
> 
> you guessed it, inprove their English skills, in particular
> among the educated or to-be educated youth and young adults.

Tho russian realised that long ago after they began publishing their books
about their tortured tales of human suffering in tho western world.
It made many people warm their heart and fall in love with Russian literature. 

Samizdat was their equivalent of the free software movement long before
its application by Stallman.

> -- 
> underground experts united
> https://dataswamp.org/~incal
> 
> 
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21  8:28                   ` Christopher Dimech
  2021-07-21  8:39                     ` tomas
@ 2021-07-21 12:56                     ` Jean Louis
  2021-07-21 13:23                       ` Emanuel Berg via Users list for the GNU Emacs text editor
                                         ` (2 more replies)
  1 sibling, 3 replies; 238+ messages in thread
From: Jean Louis @ 2021-07-21 12:56 UTC (permalink / raw)
  To: Christopher Dimech; +Cc: help-gnu-emacs, moasenwood

* Christopher Dimech <dimech@gmx.com> [2021-07-21 11:29]:
> > > And all over the world, a lot of students who do not feel
> > > confident with English treat the lack of available
> > > translations as a significant hurdle, or even a barrier.
> 
> This would not solve the problem of doing real work.  Nobody
> would care about that piece of software if not written in english.

To contrary I think many would have benefits with software written in
their language.

> I wonder how we never got any programming languages not in the
> english language.

Here are some references in the list:
https://en.wikipedia.org/wiki/Non-English-based_programming_languages

>  Because all those people were either living in the United States or
> the United Kingdom.

Because the computer science is based in English countries.

> Could be that the French are still in denial in accepting such fact.
> They were the original developers and authors of computing
> technology.

French based programming languages are: Logo, RoboMind, Catrobat,
AppleScript, ALGOL 68, GOTO++, Linotte, LSE, BASICOIS, SPIP, 4th
Dimension, so that is all from the above reference.

I find the idea of translating programming language very
important. 

And not that I find it hard to implement:

- I would use any programming language as the starting language;

- Any description defined would be defined in chunks so that automated
  programming works better. For example names of variables would not
  be names, rathre pointers to ID of the variable which then has
  entries for each programming language; same for functions and other
  objects;

- Then one would generate the language in the starting language;

- If translated it would be generated in the other language.

- I would demand more literate function naming;

Translation would speed up computer level knowledge in many other countries.


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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 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
  2 siblings, 2 replies; 238+ messages in thread
From: Jean Louis @ 2021-07-21 13:01 UTC (permalink / raw)
  To: help-gnu-emacs

* Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> [2021-07-21 11:57]:
> Well, they have resources to do that, and hire themselves and
> each other to do the job for the right price. A lot is for
> political reasons, also. But, obviously I don't know how
> everything happens there, but of course the international
> language is English there as well as everywhere else.

What means international? Is it for all countries or just few
countries?

Maybe interpretation is too narrow.

https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers

Order the table by the number of first language speakers.

Look at the number one language spoken in the world, which is which?
Chinese. 1.12 billion speakers! It is definitely international
language by definition.

Spanish is second language by first language speakers. It is
international.

Then comes English, Hindi, Portuguese.


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21 12:44                             ` Christopher Dimech
@ 2021-07-21 13:20                               ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 13:20 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

> Tho russian realised that long ago after they began
> publishing their books about their tortured tales of human
> suffering in tho western world. It made many people warm
> their heart and fall in love with Russian literature.

But that's in the past, I don't think Russia is a superpower
in terms of literature and international publishing *today*.
With their very educated population there should be a big
_internal_ market that to some extent is near-international
(their diaspora or otherwise Russian readers in Ukraine,
Belarus, Latvia, Kazakhstan etc). But I think it is nothing,
virtually, compared to NYC where all the European publishing
powerhouses reside (and the US market for that matter), these
guys probably think they are kings or something ... well, some
of the books they publish are awesome, no doubt, so maybe they
earned it? *hesitant*

I've said like one decade now we should have an essay or
coffee table book on Emacs, called the "Emacs World", a super
polished product with screenshot and tables of all thinkable
data, that would be one way to get back at them, for sure!
But it could also be a unique, cool product. There are TONS of
money in the book business and that is reachable without
a huge effort (write one book page a day, you have a heft book
in one year). I happen to know from my biblio-intelligence
software biblio-int.el that there are public libraries all over
the world that have bookshelf after bookshelf with computer
books in English, most often without a single book on Emacs.
The last time I brought up the idea I got the response they
should get the Emacs manual! Ha :) Well, I agree, they should,
however clearly it doesn't work like this.

Here are a bunch of books that are good, except for one, which
is horrible, yeah, you guessed it, RMS's "semi-biography"
written by a "non-programmer" :D Well, I laugh because it is
sad. Assange's book is also poor, but not as bad. The rest are
OK or good, and in particular 'Generation 500' (Amiga),
'Generation 64' (C64), and the one first mentioned,
'A Quarter Century of UNIX' could be used as templates what we
could do with Emacs, easily.

Here are some book-related resources that might interest
someone, maybe:

https://dataswamp.org/~incal/#isbn
https://dataswamp.org/~incal/books/isbn.txt
https://dataswamp.org/~incal/emacs-init/isbn-verify.el
https://dataswamp.org/~incal/emacs-init/issn-verify.el
https://dataswamp.org/~incal/emacs-init/bibtex-incal.el
https://dataswamp.org/~incal/emacs-init/latex.el
https://dataswamp.org/~incal/books/books.bib
https://dataswamp.org/~incal/books/
https://dataswamp.org/~incal/emacs-init/ecat-incal.el

%%%% computer culture

@book{quarter-century-of-unix,
  author     = {Peter Salus},
  isbn       = 0201547775,
  publisher  = {Addison-Wesley},
  title      = {A Quarter Century of UNIX},
  year       = {1994}
}

@book{just-for-fun,
  author     = {Linus Torvalds},
  isbn       = 9780066620732,
  publisher  = {Harper},
  title      = {Just for Fun: The Story of an Accidental Revolutionary},
  year       = {2002 (2001)}
}

@book{generation-500,
  author     = {Jimmy Wilhelmsson},
  isbn       = {978-91-76293-70-6},
  publisher  = {Bokfabriken},
  title      = {Generation 500},
  year       = {2017}
}

@book{i-allmanhetens-tjanst-permanent-record,
  author     = {Edward Snowden},
  isbn       = {978-91-7343-975-6},
  publisher  = {Leopard},
  title      = {I allmänhetens tjänst (Permanent Record)},
  translator = {Stefan Lindgren},
  year       = {2019 (2019)}
}

@book{free-as-in-freedom,
  author     = {Richard Stallman and Sam Williams},
  isbn       = 0983159211,
  publisher  = {FSF},
  title      = {Free as in Freedom 2.0},
  year       = {2010}
}

@book{svenska-hackare,
  author     = {Daniel Goldberg och Linus Larsson},
  isbn       = {978-91-1-303964-0},
  publisher  = {Norstedts},
  title      = {Svenska hackare},
  year       = {2011}
}

@book{generation-64,
  author     = {Jimmy Wilhelmsson},
  isbn       = {91-630-9465-7},
  publisher  = {Bokfabriken},
  title      = {Generation 64},
  year       = {2014}
}

@book{copyright-finns-inte,
  author     = {Linus Walleij},
  isbn       = {91-630-9465-7},
  publisher  = {RootGear},
  title      = {Copyright finns inte},
  year       = {1999}
}

@book{memoarer-ar-prostitution,
  author     = {Julian Assange},
  isbn       = {978-91-1-303764-6},
  publisher  = {Norstedt},
  title      = {"Memoarer är prostitution": en omtvistad självbiografi},
  year       = {2011}
}

@book{programmers-at-work,
  author     = {Susan Lammers},
  isbn       = 1556152116,
  publisher  = {Tempus Books},
  title      = {Programmers at Work},
  year       = {1989}
}

@book{quarter-century-of-unix,
  author     = {Peter Salus},
  isbn       = 0201547775,
  publisher  = {Addison-Wesley},
  title      = {A Quarter Century of UNIX},
  year       = {1994}
}

%%%% Apple

@book{steve-jobs-en-biografi,
  author     = {Walter Isaacson},
  isbn       = {978-91-7429-285-5},
  publisher  = {Bonnier},
  title      = {Steve Jobs - en biografi (Steve Jobs)},
  year       = {2012 (2011)}
}

@book{iwoz,
  author     = {Steve Wozniak},
  isbn       = {0-393-06143-4},
  publisher  = {Norton \& Company},
  title      = {iWoz},
  year       = {2006}
}

Re: Russia, they are a superpower in terms of their military
strength, both as employed by them and because of their
defence industry, Rosoboronexport (Russian Arms Export,
maybe).

Another industry/area where they are absolutely top notch is
space! Even the US guys were mere passengers aboard their
Sojuz shuttles ever since cancelling their own space shuttle
programs. But maybe the US guys are returning to the field?
(or sphere I guess :))

That's it I'm afraid, weapons (both their own employment of
them and exporting them) and space, or am I wrong?
Natural resources are good but they don't really impress the
man on the street this day and age, sorry.

> Samizdat was their equivalent of the free software movement
> long before its application by Stallman.

I like the connection, didn't think of that, but even so the
past is the past. Past merits, while no one can take them away
from you, last 2 years, tops, typically...

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:22                       ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-07-21 17:02                       ` Christopher Dimech
  2 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 13:23 UTC (permalink / raw)
  To: help-gnu-emacs

Jean Louis wrote:

> French based programming languages are: Logo, RoboMind,
> Catrobat, AppleScript, ALGOL 68, GOTO++, Linotte, LSE,
> BASICOIS, SPIP, 4th Dimension, so that is all from the
> above reference.

Sorry, I disagree 100% with everything in your post but yes,
for the record no one is making the case the French didn't
contribute to the computer world, on the contrary as you show
(cool) but that isn't the issue, well, it hasn't been so far
anyway, I've been speaking of the computer world langauge
only, which happens to be ... not French. And it doesn't
matter what they did or didn't do, sorry.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Thibaut Verron @ 2021-07-21 13:39 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs

On 21/07/2021 15:23, Emanuel Berg via Users list for the GNU Emacs text 
editor wrote:
> Jean Louis wrote:
>
>> French based programming languages are: Logo, RoboMind,
>> Catrobat, AppleScript, ALGOL 68, GOTO++, Linotte, LSE,
>> BASICOIS, SPIP, 4th Dimension, so that is all from the
>> above reference.
> Sorry, I disagree 100% with everything in your post but yes,
> for the record no one is making the case the French didn't
> contribute to the computer world, on the contrary as you show
> (cool) but that isn't the issue, well, it hasn't been so far
> anyway, I've been speaking of the computer world langauge
> only, which happens to be ... not French. And it doesn't
> matter what they did or didn't do, sorry.
>
You misread what Jean said. This is not a list of programming languages 
coming from France, it is a list of languages where some or all the 
keywords are in French, by default or optionally.

I personally don't support translating programming languages. I had too 
many unpleasant experiences with Excel/Libreoffice (I don't remember 
which one was translating the functions to French, but not both, and it 
was very confusing).




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 13:51 UTC (permalink / raw)
  To: help-gnu-emacs

Jean Louis wrote:

> What means international? Is it for all countries or just
> few countries?

OK, clarification of terminology, there is one HUGE and
totally dominating Computer World *language*, which is
English. There are a couple of miniature - not worlds - but
national fragments, note that these fragment's sizes are
absolutely not proportional to the sizes of their language
groups in general on the planet Earth, so while English is big
internationally in general among other big and small groups,
in the computer world in particular English outclasses
everyone else completely, even if we would put all the
fragments together, i.e. "English vs. The Rest of the World",
that's a no contest in terms of technology in general and
computers in particular, it _is_ English. Deal with it...

You can verify this yourself, the LKML (Linux Kernel Mailing
List) often has 10 000+ messages in _a single week_. (Linux,
written by a Finish guy who speaks Finnish and Swedish and
English and now lives in the US, who did it as a CS student
with the help a bunch of convenient tools from the GNU project
which happens to be American, doing the all-American Unix
again, with a graphic system from MIT...

OK, that said, let the number talk: 10 000 posts/1 week

So let's examine the "alternative world" theory, which I know
is false but whatever... let's go nuts, please you guys
present the corresponding Linux kernel development mailing
lists in whatever native language anyone feels like pushing
for, and how many posts they have every week in average and
what is their influence on Linux compared to LKML one might
wonder wonder?

Now I sound mean, maybe disrespectful, but actual this
doesn't mean - and it isn't like that! - that the
US/English/etc takes the whole cred for Linux, just because
they - AND EVERYONE ELSE - use their language, on the contrary
the French, German, Russian guys etc are ALSO on the LKML and
that is BTW numerically speaking part of the reason (a good
reason, don't change that whatever you do) why the non-English
computer fragments are so small. You think the US guys can
muster 10 000 in a week all by themselves? No.

Even in the 90s, if you remember IRC or USENET back then, the
national and language-specific dimension was 1000 times more
present (OK, that number I just made up), now it is all
English, English, English... Please deal it.

PS. Programming languages in different languages BTW is many
    times more crazy than translation of books, which at least
    has the form of a rational activity and in many eras and
    circumstances and field were or mighty well could have
    been, just here and now isn't, or arguably isn't anyway;
    programming languages in different languages (the same
    language? A Swedish Lisp, anyone? sw-lisp? SL? OK, let's
    go here

    ööö ... vaf ?

    (låt-associeringslista
      (punkt-symbolnotation ... ?)
      (om tillstånd (emellertid ...

    ?????

Have you lost it? :)

Hahaha :) (I laugh at the mere thought which is just bizarre.)

--

underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 14:05 UTC (permalink / raw)
  To: help-gnu-emacs

Thibaut Verron wrote:

> You misread what Jean said. This is not a list of
> programming languages coming from France, it is a list of
> languages where some or all the keywords are in French, by
> default or optionally.

Yeah, I didn't recognize even most of them I think, but there
are languages from France, Prolog, right?

   Prolog 1972 France, Alain Colmerauer, logic/AI programming

that is the only hit for "France" in my HIST file:

  https://dataswamp.org/~incal/COMP-HIST
  https://dataswamp.org/~incal/bot/scripts/hist
  https://dataswamp.org/~incal/#bot

What about Pascal? Nope, Switzerland

  Pascal      1970 Niklaus Wirth. Switzerland

"Pascal Sol" is French, don't know what that is tho...

  Pascal Sol was designed around 1983 by a French team to
  implement a Unix-like system named Sol. It was standard
  Pascal level-1 ... The Sol team later on moved to the
  ChorusOS project to design a distributed operating system."
  <https://en.wikipedia.org/wiki/Pascal_(programming_language)>

Doesn't sound like they had a lot of success tho, see?
Should have named it after the great US space-geometry
mathematician Yogi Berra instead...

But I haven't systematically added "nationality" in the HIST
file so maybe some more French connections there, check it
out, if you'd like...

Here is some Prolog from a person (me) who didn't understood
it, but understood it enough not to like it, well, not for
that project anyway:

  https://dataswamp.org/~incal/terror-2/
  https://dataswamp.org/~incal/#terror

Prolog, CS Sudoku-solver logic-programming thing, right?
Too much science for me anyway... But I'm sure it's good.
I BTW had a friend who made an interface from Prolog to some
database, that to my astonishment when I heard of it didn't
exist at that point, so that was a cool thing he did, on the
BSc level even! I wish I could CC him this one decade after he
probably completed it...

> I personally don't support translating programming languages.
> I had too many unpleasant experiences with Excel/Libreoffice
> (I don't remember which one was translating the functions to
> French, but not both, and it was very confusing).

ikr? 100%

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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 14:22                       ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-07-21 17:02                       ` Christopher Dimech
  2 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 14:22 UTC (permalink / raw)
  To: help-gnu-emacs

Jean Louis wrote:

> French based programming languages are: Logo, RoboMind,
> Catrobat, AppleScript, ALGOL 68, GOTO++, Linotte, LSE,
> BASICOIS, SPIP, 4th Dimension, so that is all from the
> above reference.

"French-based", uhm, what does that mean? ALGOL 68 seems to be
a Swiss/Dutch thing?
<https://en.wikipedia.org/wiki/ALGOL>

Switzerland, is that what you mean? In Belgium they speak
French in the capital which is more international I guess, but
I heard the administration does everything double! And also in
the southern part (~half) around Liège which has dominated
politically historically, or am I wrong? But the Dutch guys,
what do they speak? Dutch? Which is close to German,
absolutely not French? But they speak French in Switzerland
(among other languages) so that what you mean?

Anyway big thanks for that list Jean, looks very exotic!
I only know (have heard of) Logo and ALGOL. I'll add them to
the HIST file sometime soon, God willing! Keep 'em coming,
French or not...

  https://dataswamp.org/~incal/COMP-HIST
  https://dataswamp.org/~incal/bot/scripts/hist
  https://dataswamp.org/~incal/#bot

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Thibaut Verron @ 2021-07-21 14:47 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs

On 21/07/2021 16:05, Emanuel Berg via Users list for the GNU Emacs text 
editor wrote:
> Thibaut Verron wrote:
>
>> You misread what Jean said. This is not a list of
>> programming languages coming from France, it is a list of
>> languages where some or all the keywords are in French, by
>> default or optionally.
> Yeah, I didn't recognize even most of them I think, but there
> are languages from France, Prolog, right?
>
>     Prolog 1972 France, Alain Colmerauer, logic/AI programming
>
> that is the only hit for "France" in my HIST file:
>
>    https://dataswamp.org/~incal/COMP-HIST
>    https://dataswamp.org/~incal/bot/scripts/hist
>    https://dataswamp.org/~incal/#bot

Caml, OCaml, and Scilab come to mind.

None of those are in French language so they didn't appear on Jean's list.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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 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
  2 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 17:02 UTC (permalink / raw)
  To: Jean Louis; +Cc: help-gnu-emacs, moasenwood


> Sent: Thursday, July 22, 2021 at 12:56 AM
> From: "Jean Louis" <bugs@gnu.support>
> To: "Christopher Dimech" <dimech@gmx.com>
> Cc: help-gnu-emacs@gnu.org, moasenwood@zoho.eu
> Subject: Re: Emacs i18n
>
> * Christopher Dimech <dimech@gmx.com> [2021-07-21 11:29]:
> > > > And all over the world, a lot of students who do not feel
> > > > confident with English treat the lack of available
> > > > translations as a significant hurdle, or even a barrier.
> >
> > This would not solve the problem of doing real work.  Nobody
> > would care about that piece of software if not written in english.
>
> To contrary I think many would have benefits with software written in
> their language.
>
> > I wonder how we never got any programming languages not in the
> > english language.
>
> Here are some references in the list:
> https://en.wikipedia.org/wiki/Non-English-based_programming_languages
>
> >  Because all those people were either living in the United States or
> > the United Kingdom.
>
> Because the computer science is based in English countries.
>
> > Could be that the French are still in denial in accepting such fact.
> > They were the original developers and authors of computing
> > technology.
>
> French based programming languages are: Logo, RoboMind, Catrobat,
> AppleScript, ALGOL 68, GOTO++, Linotte, LSE, BASICOIS, SPIP, 4th
> Dimension, so that is all from the above reference.
>
> I find the idea of translating programming language very
> important.

It is the same problem of translating english publications to other languages.
Rarely happens.  Although the best works almost always get translated, because
there exists a market for them.

The Adventures of Pinocchio is best :)

Alice's Adventures in Wonderland
Andersen's Fairy Tales
El Ingenioso Hidalgo Don Quijote de la Mancha
The Adventures of Asterix
The Adventures of Tintin
Harry Potter
Bhagavad Gita
The Diary of a Young Girl
Winnie-the-Pooh
Pippi Longstocking
The Alchemist
The Adventures of Huckleberry Finn
Nineteen Eighty-Four
Isha Upanishad


> And not that I find it hard to implement:
>
> - I would use any programming language as the starting language;
>
> - Any description defined would be defined in chunks so that automated
>   programming works better. For example names of variables would not
>   be names, rathre pointers to ID of the variable which then has
>   entries for each programming language; same for functions and other
>   objects;
>
> - Then one would generate the language in the starting language;
>
> - If translated it would be generated in the other language.
>
> - I would demand more literate function naming;
>
> Translation would speed up computer level knowledge in many other countries.
>
>
> --
> Jean
>
> Take action in Free Software Foundation campaigns:
> https://www.fsf.org/campaigns
>
> In support of Richard M. Stallman
> https://stallmansupport.org/
>
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-21 17:02                       ` Christopher Dimech
@ 2021-07-21 17:49                         ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 17:49 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

> It is the same problem of translating english publications
> to other languages. Rarely happens. Although the best works
> almost always get translated, because there exists a market
> for them.
>
> The Adventures of Pinocchio is best :)
>
> Alice's Adventures in Wonderland
> Andersen's Fairy Tales
> El Ingenioso Hidalgo Don Quijote de la Mancha
> The Adventures of Asterix
> The Adventures of Tintin
> Harry Potter
> Bhagavad Gita
> The Diary of a Young Girl
> Winnie-the-Pooh
> Pippi Longstocking
> The Alchemist
> The Adventures of Huckleberry Finn
> Nineteen Eighty-Four
> Isha Upanishad

From the Franco-Belgian comic book bande dessinée industry,
craft, and art form:

  Blueberry
  The Incal (not in the list below)
  The Metabarons (*)
  Thorgal
  ... and many others

(*) Here the script author, Alejandro Jodorowsky, is Chilean
    (or Chilean-French they say officially, that's news for
    me, he is more South American than French to the style
    anyway)
    <https://en.wikipedia.org/wiki/Alejandro_Jodorowsky> and
    the artist, Juan Giménez, is from Argentine, but they
    belong to the French Métal Hurlant sphere nonthesame, and
    Jean Giraud AKA Moebius (of France) drew old-school Incal
    ("L'Incal") where the Metabaron appeared as a character,
    so it is French despite or much thanks to the awesome work
    of Giménez, Giraud, and Jodorowsky.
    
https://dataswamp.org/~incal/books/books.bib

%%%% Thorgal

@book{thorgal,
  author     = {Jean Van Hamme and Grzegorz Rosinski},
  isbn       = {91-7089-710-7},
  publisher  = {Casablanca},
  title      = {Thorgal: Den onde guden},
  year       = {1993 (1987)}
}

@book{thorgals-varld-kriss-3,
  author     = {De Vita and Sente and Dorison and Mariolle and Surzhenko},
  isbn       = {978-91-88897-00-8},
  publisher  = {Cobolt},
  title      = {Thorgals värld: Kriss från Valnor 3},
  year       = {2019 (2014-2015)}
}

@book{thorgals-varld-kriss-2,
  author     = {De Vita and Yves Sente},
  isbn       = {978-91-87861-74-1},
  publisher  = {Cobolt},
  title      = {Thorgals värld: Kriss från Valnor 2: Krigardrottningen},
  year       = {2018}
}

@book{thorgal-5,
  author     = {Jean Van Hamme and Grzegorz Rosinski},
  isbn       = {978-91-87861-68-0},
  publisher  = {Cobolt},
  title      = {Thorgal 5: Genom tid och rum},
  year       = {2017 (1989-91)}
}

@book{thorgal-3,
  author     = {Jean Van Hamme and Grzegorz Rosinski},
  isbn       = {978-91-87861-21-5},
  publisher  = {Cobolt},
  title      = {Thorgal 3: Vikingar och gudar},
  year       = {2016 (1988)}
}

@book{thorgal-2,
  author     = {Jean Van Hamme and Grzegorz Rosinski},
  isbn       = {978-91-87861-12-3},
  publisher  = {Cobolt},
  title      = {Thorgal 2: I fiendens spår},
  year       = {2015}
}

%%%% Metabarons

@book{metabarons-poet-and-killer,
  author     = {Alexandro Jodorowsky and Juan Giménez},
  isbn       = 1930652232,
  publisher  = {Humanoids},
  title      = {Metabarons: Poet and Killer},
  year       = {2002}
}

@book{metabarons-path-of-the-warrior,
  author     = {Alexandro Jodorowsky and Juan Giménez},
  isbn       = {193065247X},
  publisher  = {Humanoids},
  title      = {Metabarons: Path of the Warrior},
  year       = {2002}
}

%%%% Blueberry

@book{blueberry-8,
  author     = {Jean-Michael Charlier and Jean Giraud},
  isbn       = {978-91-87861-99-4},
  publisher  = {Cobolt},
  title      = {Blueberry 8},
  year       = {2019 (1990-1999)}
}

@book{blueberry-6,
  author     = {Jean-Michael Charlier and Jean Giraud},
  isbn       = {978-91-87861-84-0},
  publisher  = {Cobolt},
  title      = {Blueberry 6},
  year       = {2018 (1974-1980)}
}

@book{blueberry-5,
  author     = {Jean-Michael Charlier and Jean Giraud},
  isbn       = {978-91-87861-67-3},
  publisher  = {Cobolt},
  title      = {Blueberry 5},
  year       = {2017}
}

@book{blueberry-4,
  author     = {Jean-Michael Charlier and Jean Giraud},
  isbn       = {978-91-87861-54-3},
  publisher  = {Cobolt},
  title      = {Blueberry 4},
  year       = {2017 (1968-1970)}
}

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 17:55 UTC (permalink / raw)
  To: help-gnu-emacs

Thibaut Verron wrote:

> Caml, OCaml, and Scilab come to mind

Thanks, now the list is

  4th Dimension
  ALGOL 68
  AppleScript
  BASICOIS
  Caml
  Catrobat
  GOTO++
  Linotte
  Logo
  LSE
  OCaml
  RoboMind
  Scilab
  SPIP

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 2 replies; 238+ messages in thread
From: Thibaut Verron @ 2021-07-21 18:15 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs

Le mer. 21 juil. 2021 à 20:00, Emanuel Berg via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org> a écrit :
>
> Thibaut Verron wrote:
>
> > Caml, OCaml, and Scilab come to mind
>
> Thanks, now the list is
>
>   4th Dimension
>   ALGOL 68
>   AppleScript
>   BASICOIS
>   Caml
>   Catrobat
>   GOTO++
>   Linotte
>   Logo
>   LSE
>   OCaml
>   RoboMind
>   Scilab
>   SPIP

What list is that exactly? I've told you twice already that what Jean
gave you is a list of languages supporting a French-language syntax.
This is NOT a list of made-in-France languages.

Heck, it has Applescript in it! Since when is Apple French?



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 18:26 UTC (permalink / raw)
  To: help-gnu-emacs

Thibaut Verron wrote:

> What list is that exactly? I've told you twice already that
> what Jean gave you is a list of languages supporting
> a French-language syntax. This is NOT a list of
> made-in-France languages.

Don't worry, I'll check every item individually on the English
Wikipedia, primarily to be able to give a meaningful and
correct summary, but that happens to include ensuring that no
programming language will be incorrectly attributed to the
French-language sphere of techno-science practitioners.

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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:40                                     ` Stefan Monnier via Users list for the GNU Emacs text editor
  1 sibling, 2 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 18:27 UTC (permalink / raw)
  To: thibaut.verron; +Cc: help-gnu-emacs, Emanuel Berg

> Sent: Thursday, July 22, 2021 at 6:15 AM
> From: "Thibaut Verron" <thibaut.verron@gmail.com>
> To: "Emanuel Berg" <moasenwood@zoho.eu>, "help-gnu-emacs" <help-gnu-emacs@gnu.org>
> Subject: Re: Emacs i18n
>
> Le mer. 21 juil. 2021 à 20:00, Emanuel Berg via Users list for the GNU
> Emacs text editor <help-gnu-emacs@gnu.org> a écrit :
> >
> > Thibaut Verron wrote:
> >
> > > Caml, OCaml, and Scilab come to mind
> >
> > Thanks, now the list is
> >
> >   4th Dimension
> >   ALGOL 68
> >   AppleScript
> >   BASICOIS
> >   Caml
> >   Catrobat
> >   GOTO++
> >   Linotte
> >   Logo
> >   LSE
> >   OCaml
> >   RoboMind
> >   Scilab
> >   SPIP
> 
> What list is that exactly? I've told you twice already that what Jean
> gave you is a list of languages supporting a French-language syntax.
> This is NOT a list of made-in-France languages.

I can see reasons why learning to read mathematical works in French will be 
a better investment than in the other languages (assuming you already know 
English, of course).  

There is still a significant, though diminishing, proportion of papers, textbooks,
and research books which are written in French.   The proportion is about 1-2%.  
The production of research in any other language than English and French has essentially
come to a halt.
 
> Heck, it has Applescript in it! Since when is Apple French?
> 
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 18:42 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

> There is still a significant, though diminishing, proportion
> of papers, textbooks, and research books which are written
> in French. The proportion is about 1-2%. The production of
> research in any other language than English and French has
> essentially come to a halt.

ikr?

These algorithms from the paleo-scientific era of computing
are discontinued.

But: Can you verify these digits (1-2%, ->0) and/or give us
references, please?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 0 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 19:06 UTC (permalink / raw)
  To: help-gnu-emacs

>> There is still a significant, though diminishing,
>> proportion of papers, textbooks, and research books which
>> are written in French. The proportion is about 1-2%.
>> The production of research in any other language than
>> English and French has essentially come to a halt.
>
> ikr?
>
> These algorithms from the paleo-scientific era of computing
> are discontinued.
>
> But: Can you verify these digits (1-2%, ->0) and/or give us
> references, please?

> ikr?
>
> These algorithms from the paleo-scientific era of computing
> are discontinued.
>
> But: Can you verify these digits (1-2%, ->0) and/or give us
> references, please?

Now we are getting somewhere, let's see, here where I live we
have three specifically computer-related educations on the
university level, namely

  * Computer Science
  (in theory the most theoretic but in practice the most
   practical one; master programs are (1) HCI, (2) CS which is
   more theory, perhaps for real this time [as in computations
   on real time models, indeed], and (3) embedded systems
   which is the coolest and most difficult one IMO because of
   the practical component and addition to theory, HCI should
   be the easiest altho nothing is "easy" on this level)

  * Information Technology Engineers
  (this is very close to CS actually and is as difficult and
   time-consuming, it has more math than CS and also a couple
   of random society-oriented courses, other than that they
   are virtually the same I'd say, and this also show in the
   big overlap with respect to courses and students; I always
   considered the IT guys as good as us and having virtually
   the same inclinations and comintment to "the cause")

  * Information Systems
  (this is something different, no overlap at all in courses
   or students with the CS and IT guys; I'd describe it as
   burocratic and administrative support systems for
   business - it is by far the least in-depth tech.
   this education isn't easy but not difficult, students who
   work moderately hard deal with it with no problems)

Can we get the stats - BSc, MSc, and PhD - what language? -
can we get the stats for these three internationally somehow?
to be able to compare and settle this for good with
hard facts?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:40                                     ` Stefan Monnier via Users list for the GNU Emacs text editor
  2021-07-21 20:49                                       ` Christopher Dimech
                                                         ` (2 more replies)
  1 sibling, 3 replies; 238+ messages in thread
From: Stefan Monnier via Users list for the GNU Emacs text editor @ 2021-07-21 19:40 UTC (permalink / raw)
  To: help-gnu-emacs

> The production of research in any other language than English and
> French has essentially come to a halt.

That's what it looks like from the (big) bubble we're in, yes.
But I think China would beg to differ.


        Stefan




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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:57                                       ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-07-22  3:48                                       ` [External] : " Drew Adams
  2 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-21 20:49 UTC (permalink / raw)
  To: monnier; +Cc: help-gnu-emacs

> Sent: Thursday, July 22, 2021 at 7:40 AM
> From: "Stefan Monnier via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> > The production of research in any other language than English and
> > French has essentially come to a halt.
>
> That's what it looks like from the (big) bubble we're in, yes.
> But I think China would beg to differ.
>
>         Stefan

China's opinion is irrelevant and full of shit.

The Chinese Academy of Sciences approved the construction of a Bio-Security Level
4 laboratory in Wuhan in 2003, only because it was designed and constructed with
French assistance as part of a 2004 cooperative agreement.  China lacks experience.

Academic corruption is rampant in China with the prevalence of fraud, plagiarism
and fabricated research in academic publishing.  It is the nation with the most
retracted papers and fake peer-review as from 2010.

With more than 50% of all articles retracted by scientific journals worldwide for
articles submitted by Chinese authors.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
                                                             ` (2 more replies)
  0 siblings, 3 replies; 238+ messages in thread
From: Stefan Monnier via Users list for the GNU Emacs text editor @ 2021-07-21 21:44 UTC (permalink / raw)
  To: help-gnu-emacs

>> > The production of research in any other language than English and
>> > French has essentially come to a halt.
>> That's what it looks like from the (big) bubble we're in, yes.
>> But I think China would beg to differ.
> China's opinion is irrelevant and full of shit.

Your prejudice doesn't change the fact that a significant (and arguably
an increasing) amount of research is done in chinese.


        Stefan




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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:57                                       ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-07-22  7:09                                         ` tomas
  2021-07-22  3:48                                       ` [External] : " Drew Adams
  2 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 21:57 UTC (permalink / raw)
  To: help-gnu-emacs

Stefan Monnier via Users list for the GNU Emacs text editor wrote:

>> The production of research in any other language than
>> English and French has essentially come to a halt.
>
> That's what it looks like from the (big) bubble we're in,
> yes. But I think China would beg to differ.

Is it possible to get hard facts, as in digits somewhere?

For the FOSS world: mailing list traffic (either in K or
perhaps more easily in the number of posts) in the devel and
user/help lists for a set of iconic software, e.g., CL,
Debian, Emacs, irssi, Linux, rsync, ssh, tmux, X, xterm,
and zsh?

How many posts are in the general (English) lists and how many
posts in other language-specific lists, dealing with the same
software, e.g. the corresponding French list, if available?

And for the university world: say math, CS, IT, Information
systems, and Engineering physics? How many BSc, MSc, and PhD
papers are in English and how many in other languages, e.g.
how many are in French?

And yes data for China as well would be nice. The more the
merrier...

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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  5:49                                           ` Eli Zaretskii
  2021-07-22 10:04                                           ` Christopher Dimech
  2 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-21 21:58 UTC (permalink / raw)
  To: help-gnu-emacs

Stefan Monnier via Users list for the GNU Emacs text editor wrote:

>> China's opinion is irrelevant and full of shit.
>
> Your prejudice doesn't change the fact that a significant
> (and arguably an increasing) amount of research is done
> in chinese.

I believe you, but how do you know that?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Stefan Monnier via Users list for the GNU Emacs text editor @ 2021-07-21 22:55 UTC (permalink / raw)
  To: help-gnu-emacs

Emanuel Berg via Users list for the GNU Emacs text editor [2021-07-21 23:58:31] wrote:
> Stefan Monnier via Users list for the GNU Emacs text editor wrote:
>>> China's opinion is irrelevant and full of shit.
>> Your prejudice doesn't change the fact that a significant
>> (and arguably an increasing) amount of research is done
>> in Chinese.
> I believe you, but how do you know that?

Only occasional anectodal "evidence", sorry.

But for example https://www.nature.com/articles/d41586-021-01076-x
refers to a major increase in funding in China, and while AFAIK top
research from China still aims to publish in English venues (which are
still more prestigious and give more exposure), I expect a large
fraction of that research is only published in Chinese (after all, the
Chinese speaking audience is already fairly large ;-)


        Stefan


PS: While the above talks about science in general, my own experience is
limited to computer science, where English is arguably even more
entrenched than in other fields.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* RE: [External] : Re: Emacs i18n
  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:57                                       ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-07-22  3:48                                       ` Drew Adams
  2021-07-22  4:08                                         ` Emanuel Berg via Users list for the GNU Emacs text editor
  2 siblings, 1 reply; 238+ messages in thread
From: Drew Adams @ 2021-07-22  3:48 UTC (permalink / raw)
  To: Stefan Monnier, 'Help-Gnu-Emacs (help-gnu-emacs@gnu.org)'

[-- Attachment #1: Type: text/plain, Size: 256 bytes --]

> > The production of research in any other language than English and
> > French has essentially come to a halt.
> 
> That's what it looks like from the (big) bubble we're in, yes.
> But I think China would beg to differ.

+1

And no need to beg.

[-- Attachment #2: winmail.dat --]
[-- Type: application/ms-tnef, Size: 14184 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: [External] : Re: Emacs i18n
  2021-07-22  3:48                                       ` [External] : " Drew Adams
@ 2021-07-22  4:08                                         ` Emanuel Berg via Users list for the GNU Emacs text editor
  2021-07-22  7:10                                           ` tomas
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-22  4:08 UTC (permalink / raw)
  To: help-gnu-emacs

Drew Adams wrote:

>>> The production of research in any other language than
>>> English and French has essentially come to a halt.
>> 
>> That's what it looks like from the (big) bubble we're in,
>> yes. But I think China would beg to differ.
>
> +1
>
> And no need to beg.

What is "research" here, the PhD level?

There are only three languages active on that level, English,
French, and Chinese?

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-22  5:49                                           ` Eli Zaretskii
  2021-07-22 10:04                                           ` Christopher Dimech
  2 siblings, 0 replies; 238+ messages in thread
From: Eli Zaretskii @ 2021-07-22  5:49 UTC (permalink / raw)
  To: help-gnu-emacs

> Date: Wed, 21 Jul 2021 17:44:46 -0400
> From:  Stefan Monnier via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org>
> 
> >> > The production of research in any other language than English and
> >> > French has essentially come to a halt.
> >> That's what it looks like from the (big) bubble we're in, yes.
> >> But I think China would beg to differ.
> > China's opinion is irrelevant and full of shit.
> 
> Your prejudice doesn't change the fact that a significant (and arguably
> an increasing) amount of research is done in chinese.

This tangent should either stop or be taken to emacs-tangents.

I urger everyone to please stop posting about this stuff here.



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Christopher Dimech @ 2021-07-22  7:05 UTC (permalink / raw)
  To: monnier; +Cc: help-gnu-emacs

Nature is a predatory journal.

How many chinese language articles have you read?  What really important information
do they contain, and how are they crucial to read?  When a similar thing was done
in russia, almost everything has by now been forgotten.

> Sent: Thursday, July 22, 2021 at 10:55 AM
> From: "Stefan Monnier via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Emanuel Berg via Users list for the GNU Emacs text editor [2021-07-21 23:58:31] wrote:
> > Stefan Monnier via Users list for the GNU Emacs text editor wrote:
> >>> China's opinion is irrelevant and full of shit.
> >> Your prejudice doesn't change the fact that a significant
> >> (and arguably an increasing) amount of research is done
> >> in Chinese.
> > I believe you, but how do you know that?
>
> Only occasional anectodal "evidence", sorry.
>
> But for example https://www.nature.com/articles/d41586-021-01076-x
> refers to a major increase in funding in China, and while AFAIK top
> research from China still aims to publish in English venues (which are
> still more prestigious and give more exposure), I expect a large
> fraction of that research is only published in Chinese (after all, the
> Chinese speaking audience is already fairly large ;-)
>
>
>         Stefan
>
>
> PS: While the above talks about science in general, my own experience is
> limited to computer science, where English is arguably even more
> entrenched than in other fields.
>
>
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: tomas @ 2021-07-22  7:09 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 516 bytes --]

On Wed, Jul 21, 2021 at 11:57:40PM +0200, Emanuel Berg via Users list for the GNU Emacs text editor wrote:
> Stefan Monnier via Users list for the GNU Emacs text editor wrote:
> 
> >> The production of research in any other language than
> >> English and French has essentially come to a halt.
> >
> > That's what it looks like from the (big) bubble we're in,
> > yes. But I think China would beg to differ.
> 
> Is it possible to get hard facts, as in digits somewhere?

emacs-tangents, please.

 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: [External] : Re: Emacs i18n
  2021-07-22  4:08                                         ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-07-22  7:10                                           ` tomas
  0 siblings, 0 replies; 238+ messages in thread
From: tomas @ 2021-07-22  7:10 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 145 bytes --]

On Thu, Jul 22, 2021 at 06:08:49AM +0200, Emanuel Berg via Users list for the GNU Emacs text editor wrote:

[...]

emacs-tangents, please.

 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 2 replies; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-22  8:11 UTC (permalink / raw)
  To: help-gnu-emacs

Christopher Dimech wrote:

> How many chinese language articles have you read?
> What really important information do they contain, and how
> are they crucial to read?

Don't the citation system determine this for us?

What's the most quoted paper in Computer Science?

That's the best one by definition, if these are the rules.

Indeed, were are the rules anyone, and where are the stats?

Because then everyone could just look at the stats and decide
for themselves in 1 second?

> When a similar thing was done in russia, almost everything
> has by now been forgotten.

Heh, check out the URL below for Putin's fake thesis. In the
book, which is anti-Putin BTW, it says Putin was that much of
a stand-up guy after becoming president, he never claimed to
have or mentioned that "degree" of his to anyone :)

%% Maria Alexandrovna Gessen
%% Putin's purchased thesis: https://www.rferl.org/a/1067113.html
@book{mannen-utan-ansikte,
  author     = {Masha Gessen},
  isbn       = {978-91-7337-484-2},
  preface    = {Stig Fredrikson},
  pages      = {436},
  publisher  = {Bromberg},
  title      = {Mannen utan ansikte (The Man Without a Face: The Unlikely Rise of Vladimir Putin)},
  translator = {Nille Lindgren},
  year       = {2013 (2012)}
}

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 0 replies; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-22  8:15 UTC (permalink / raw)
  To: help-gnu-emacs

Le mercredi 21 juillet 2021, 15:01:54 CEST Jean Louis a écrit :
> * Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-
emacs@gnu.org> [2021-07-21 11:57]:
> > Well, they have resources to do that, and hire themselves and
> > each other to do the job for the right price. A lot is for
> > political reasons, also. But, obviously I don't know how
> > everything happens there, but of course the international
> > language is English there as well as everywhere else.
> 
> What means international? Is it for all countries or just few
> countries?

several countries

the main point of what he says is not “international” but “the”.  maybe he 
mostly tries to say “vehicular”.

> Maybe interpretation is too narrow.
> 
> https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speak
> ers
> 
> Order the table by the number of first language speakers.
> 
> Look at the number one language spoken in the world, which is which?
> Chinese. 1.12 billion speakers! It is definitely international
> language by definition.

“international” does not mean “big” but “among several nations” or 
“outside of only one nation”.  You may consider chinese international if 
you consider mandarin, cantonese, etc. to be different nations.

> Spanish is second language by first language speakers. It is
> international.
> 
> Then comes English, Hindi, Portuguese.




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 0 replies; 238+ messages in thread
From: tomas @ 2021-07-22  8:16 UTC (permalink / raw)
  To: help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 159 bytes --]


On Thu, Jul 22, 2021 at 10:11:22AM +0200, Emanuel Berg via Users list for the GNU Emacs text editor wrote:
[...]
emacs-tangents, please. Pretty please.

 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-22  8:17 UTC (permalink / raw)
  To: help-gnu-emacs

tomas wrote:

>>>> The production of research in any other language than
>>>> English and French has essentially come to a halt.
>>>
>>> That's what it looks like from the (big) bubble we're in,
>>> yes. But I think China would beg to differ.
>> 
>> Is it possible to get hard facts, as in digits somewhere?
>
> emacs-tangents, please.

The Computer Science university and research world is relevant
to Emacs, and we want to be relevant there with our software.

And stats and facts make discussions more on-topic, not less,
don't you think?

Then all the ranting could be replaced by, "Mes braves, take
a look at the stats, think, and decide for yourself."

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  2021-07-22  8:17                                           ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-07-22  9:18                                             ` lisa-asket
  0 siblings, 0 replies; 238+ messages in thread
From: lisa-asket @ 2021-07-22  9:18 UTC (permalink / raw)
  To: moasenwood, help-gnu-emacs

From: Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org>
To: help-gnu-emacs@gnu.org
Subject: Re: Emacs i18n
Date: 22/07/2021 10:17:14 Europe/Paris

tomas wrote:

>>>> The production of research in any other language than
>>>> English and French has essentially come to a halt.
>>>
>>> That's what it looks like from the (big) bubble we're in,
>>> yes. But I think China would beg to differ.
>> 
>> Is it possible to get hard facts, as in digits somewhere?
>
> emacs-tangents, please.

>The Computer Science university and research world is relevant
>to Emacs, and we want to be relevant there with our software.



The argument is to convince us to write in Chinese so we can be relevant ?

If they want they can do that themselves ! 









^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  1 sibling, 0 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-22  9:24 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs



----- Christopher Dimech
Administrator General - Naiad Informatics - Gnu Project

Society has become too quick to pass judgement and declare someone
Persona Non-Grata, the most extreme form of censure a country can
bestow.

In a new era of destructive authoritarianism, I support Richard
Stallman.  Times of great crisis are also times of great
opportunity.  I call upon you to make this struggle yours as well !

https://stallmansupport.org/
https://www.fsf.org/     https://www.gnu.org/


> Sent: Thursday, July 22, 2021 at 8:11 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Christopher Dimech wrote:
>
> > How many chinese language articles have you read?
> > What really important information do they contain, and how
> > are they crucial to read?
>
> Don't the citation system determine this for us?
>
> What's the most quoted paper in Computer Science?

It is the highly influential paper of how products can be made cheap,
and with the highest profit margins.  Which the Chinese Manufacturing
Companies do by outsourcing in Africa.  Welcome to the New Slave Trade.

> That's the best one by definition, if these are the rules.
>
> Indeed, were are the rules anyone, and where are the stats?
>
> Because then everyone could just look at the stats and decide
> for themselves in 1 second?
>
> > When a similar thing was done in russia, almost everything
> > has by now been forgotten.
>
> Heh, check out the URL below for Putin's fake thesis. In the
> book, which is anti-Putin BTW, it says Putin was that much of
> a stand-up guy after becoming president, he never claimed to
> have or mentioned that "degree" of his to anyone :)
>
> %% Maria Alexandrovna Gessen
> %% Putin's purchased thesis: https://www.rferl.org/a/1067113.html
> @book{mannen-utan-ansikte,
>   author     = {Masha Gessen},
>   isbn       = {978-91-7337-484-2},
>   preface    = {Stig Fredrikson},
>   pages      = {436},
>   publisher  = {Bromberg},
>   title      = {Mannen utan ansikte (The Man Without a Face: The Unlikely Rise of Vladimir Putin)},
>   translator = {Nille Lindgren},
>   year       = {2013 (2012)}
> }
>
> --
> underground experts united
> https://dataswamp.org/~incal
>
>
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  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-22  5:49                                           ` Eli Zaretskii
@ 2021-07-22 10:04                                           ` Christopher Dimech
  2 siblings, 0 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-22 10:04 UTC (permalink / raw)
  To: monnier; +Cc: help-gnu-emacs

> Sent: Thursday, July 22, 2021 at 9:44 AM
> From: "Stefan Monnier via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> >> > The production of research in any other language than English and
> >> > French has essentially come to a halt.
> >> That's what it looks like from the (big) bubble we're in, yes.
> >> But I think China would beg to differ.
> > China's opinion is irrelevant and full of shit.
>
> Your prejudice doesn't change the fact that a significant (and arguably
> an increasing) amount of research is done in chinese.

To get really back on topic, nobody started to work on multilingualisation
seriously.  I support the idea of a multilingualisation framework, but a focus
on particular languages such as chinese is misguided.

Peaple conversant in particular language can then have the capability
of doing that specific work.





^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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 13:01                       ` Jean Louis
@ 2021-07-22 17:32                       ` Yuri Khan
  2021-07-22 18:02                         ` Alexandre Garreau
  2 siblings, 1 reply; 238+ messages in thread
From: Yuri Khan @ 2021-07-22 17:32 UTC (permalink / raw)
  To: Emanuel Berg, help-gnu-emacs

On Wed, 21 Jul 2021 at 15:55, Emanuel Berg via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org> wrote:

> Translating huge books is just an immense wasted effort that
> also have several negative effects that I've mentioned
> already. For example this book
>
> @book{introduction-to-algorithms,
>   author     = {Cormen and Leiserson and Rivest and Stein},
>   edition    = {2nd edition},
>   isbn       = {0-268-53196-8},
>   publisher  = {MIT Press},
>   title      = {Introduction to Algorithms},
>   year       = {2001}
> }
>
> It is 1184 pages!
>
> And that format (book heft) isn't uncommon!
>
> Are you going to translate this to French because some French
> guys aren't good enough English readers?

[This one?][1] It has been translated into Russian and it is being
sold at ~73 USD. Which is a lot for a book, and still it seems there
is demand for it.

(As for me, if I personally wanted to own a copy of that book, I could
probably buy it in English on Amazon for cheaper. I’ve seen enough
books whose translations were inaccurate, inelegant or any combination
of the above.)

[1]: https://www.ozon.ru/product/algoritmy-postroenie-i-analiz-33769775/



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  2021-07-22 17:32                       ` Yuri Khan
@ 2021-07-22 18:02                         ` Alexandre Garreau
  0 siblings, 0 replies; 238+ messages in thread
From: Alexandre Garreau @ 2021-07-22 18:02 UTC (permalink / raw)
  To: help-gnu-emacs

Le jeudi 22 juillet 2021, 19:32:49 CEST Yuri Khan a écrit :
> On Wed, 21 Jul 2021 at 15:55, Emanuel Berg via Users list for the GNU
> 
> Emacs text editor <help-gnu-emacs@gnu.org> wrote:
> > Translating huge books is just an immense wasted effort that
> > also have several negative effects that I've mentioned
> > already. For example this book
> > 
> > @book{introduction-to-algorithms,
> > 
> >   author     = {Cormen and Leiserson and Rivest and Stein},
> >   edition    = {2nd edition},
> >   isbn       = {0-268-53196-8},
> >   publisher  = {MIT Press},
> >   title      = {Introduction to Algorithms},
> >   year       = {2001}
> > 
> > }
> > 
> > It is 1184 pages!
> > 
> > And that format (book heft) isn't uncommon!
> > 
> > Are you going to translate this to French because some French
> > guys aren't good enough English readers?
> 
> [This one?][1] It has been translated into Russian and it is being
> sold at ~73 USD. Which is a lot for a book, and still it seems there
> is demand for it.
> 
> (As for me, if I personally wanted to own a copy of that book, I could
> probably buy it in English on Amazon for cheaper. I’ve seen enough
> books whose translations were inaccurate, inelegant or any combination
> of the above.)

Same for me, I regularely noticed that.  Yet I own french translations of 
some important books, such as this one (and I got it from another user of 
emacs, btw, met on emacs french irc channel), and first edition sicp (which 
was translated in my university).

But as nothing is perfect, absolute and rarely objective, there can be 
stuff you can sometimes like in old editions, for instance the first edition 
of sicp contains some additional exercises (some of which are unsolvable, 
yet amusing to try to solve), and I dislike the “object.notation” of third 
ed. of cormen, which does not appear in french edition which is from 
second ed.

More generally, if books used a tailor-made translation infrastructure, 
such as GNUnation, or anything allowing to translate only changed/added 
paragraphs, and only portion of them, that would make translation of new 
editions much easier… but I’m pretty sure it’s not done because (1) 
copyright unhelps, (2) it’s obviously already profitable anyway, even being 
horribly expensive, (3) the interest in it and profitability, especially in 
smaller audiance, may be a lot more chaotic and variable, so it may not 
remain always as interesting to translate.

But more generally a few errors and (correctable!) unaccuracies are worth 
the increased easiness reading.

Anyway *that* is the core, DH0 [0] point of it.  And you may attack it 
pretty efficiently (but maybe you don’t want that but just hope everybody 
feels like you more generally dismissing everything else) on its *own* 
playground (the political field) in this way: having a wide and rich enough 
linguistic sphere for benefiting from it is a privilege, that currently 
mostly benefit the most powerful imperialist nations (france, russia, 
china, japan, hispanophone and lusophone countries, arabic countries), 
dismissing most of other languages

So it would not even be efficient (*at all*) at protecting languages from 
extinction (beside that side effect that english would spread less fast and 
extinguish them more slowly).

A counter-argument, which, contrarily to the uneasiness of reading a 
foreign language, may by chance not be scientifically studied upon, is that 
it’s still easier to learn a similar language, from the same family, 
rather than just english.  Except Japan which is an isolate, and Iberic 
ones which are totally unrelated to american languages (well except 
vocabulary nowadays…), there are many arabic (maybe semitic in general), 
chinese, slavic, and latin languages out there… yet some very important 
families are missing from that imperialist game, such as austronesian, and 
many african, american, indian (and asian in general) ones.

Actually, if I wanted to approach from adressing your core, DH0 [0] point, 
of shared culture, I may say that centralization (except maybe in some 
“utopia” where all languages are extinguished) is not the most efficient way 
of doing it… just as broadcasting everything, in a horizontal, 
decentralized and most importantly *indirect* network such as the internet 
(or more generally human relations), is less efficient as *multicasting* in 
a tree-shaped way: translating most important stuff to main languages of 
most important linguistic families, that would then be learned by most 
people may be easier, as for the fact that most of the human population 
still is *ignorant* (it’s not necessarily elitism, it’s just a fact, not a 
researched goal or an immutable truth) about science and technology, we 
could maybe in this way approach more the goal of making them *aware* of 
what’s important in it.

Most important knowledge is not the one that change most often.  Classical 
mechanics are still used, and it’s good that books on it are translated in 
most of languages (in it could be in *all* languages that’d be great).  

I’m *sure* translating Knuth would be wonderful, once he’s dead (I hope he 
authorizes it, but under american copyright law maybe he’s not even 
allowed to free his own work after publishing so well…).

[0] http://www.paulgraham.com/disagree.html



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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-23  6:03           ` Jean Louis
  2021-07-23  9:22             ` Emanuel Berg via Users list for the GNU Emacs text editor
  1 sibling, 1 reply; 238+ messages in thread
From: Jean Louis @ 2021-07-23  6:03 UTC (permalink / raw)
  To: help-gnu-emacs

* Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> [2021-07-17 23:58]:
> Alexandre Garreau wrote:
> 
> > Translating emacs would require to translate many
> > identifiers, it would actually amount to translate
> > a programming language
> 
> I don't think anyone suggests doing that, I think what can be
> translated is *the interface*, so for example in the menu
> "Quit" or "Exit" or whatever it says (I'm not a menu user)
> _that_ would be translated. I don't think there are a lot of
> advantages doing this, and I do see some DISadvantages, so
> I think it shouldn't be done, actually, but the suggestion
> isn't "translate everything", that would be an insane, almost,
> rather than a bad suggestion.

Many things could be translated, it is about GNU Project to organize
translation efforts:

- TUTORIAL is translated in many languages, it could be done in more,
  this is first essential document to start with.

- Emacs Lisp Intro and Manual could be translated in other languages;
  let us say if it is translated into German language then this would
  be the jumping board or starting point to continue translation of
  other parts of Emacs;

- Menu system definitely could be translate, but maybe it is just like
  so much software uses gettext, I would not know. I would say not
  even to translate it if Emacs Lisp Intro and Manual are not yet
  ready in the same language.

- GNU MANIFESTO (I don't find it), GNU Project and other GNU website
  pages as linked from Emacs are I guess already translated in many
  languages. I did not test it but I doubt that Emacs is checking for
  locale settings and fetching the right translated page from website,
  it should. If user is on German language then Emacs should fetch
  German version from GNU Project website;


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



^ permalink raw reply	[flat|nested] 238+ messages in thread

* Re: Emacs i18n
  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
  0 siblings, 1 reply; 238+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2021-07-23  9:22 UTC (permalink / raw)
  To: help-gnu-emacs

Christ, I shouldn't have engaged in this discussion the way
I did, I was a bit out of my head that night, anyway this is
the same case as everycase else where everyone is just seeing
everything from their perspective and when one tilted reality
collide with another that is also tilted this is what happens.

No one has a monopoly on interpreting reality! So no one
should act like that either.

For example just looking at this pic from my birthday party
one might easily get the wrong idea:

  https://dataswamp.org/~incal/pimgs/pharty.png

-- 
underground experts united
https://dataswamp.org/~incal




^ permalink raw reply	[flat|nested] 238+ messages in thread

* Emacs i18n
  2021-07-23  9:22             ` Emanuel Berg via Users list for the GNU Emacs text editor
@ 2021-07-27 20:52               ` Christopher Dimech
  0 siblings, 0 replies; 238+ messages in thread
From: Christopher Dimech @ 2021-07-27 20:52 UTC (permalink / raw)
  To: moasenwood; +Cc: help-gnu-emacs


There was a difference in focus about the task.  I took a dimension that makes
a more powerful engine.  But one is a success if one is not a slave to another
person's idea.  So we're ok ;)

Felicitations
Christopher



> Sent: Friday, July 23, 2021 at 9:22 PM
> From: "Emanuel Berg via Users list for the GNU Emacs text editor" <help-gnu-emacs@gnu.org>
> To: help-gnu-emacs@gnu.org
> Subject: Re: Emacs i18n
>
> Christ, I shouldn't have engaged in this discussion the way
> I did, I was a bit out of my head that night, anyway this is
> the same case as everycase else where everyone is just seeing
> everything from their perspective and when one tilted reality
> collide with another that is also tilted this is what happens.
>
> No one has a monopoly on interpreting reality! So no one
> should act like that either.
>
> For example just looking at this pic from my birthday party
> one might easily get the wrong idea:
>
>   https://dataswamp.org/~incal/pimgs/pharty.png
>
> --
> underground experts united
> https://dataswamp.org/~incal
>
>
>



^ permalink raw reply	[flat|nested] 238+ messages in thread

end of thread, other threads:[~2021-07-27 20:52 UTC | newest]

Thread overview: 238+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-17  9:27 Emacs i18n 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-22  3:48                                       ` [External] : " Drew Adams
2021-07-22  4:08                                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-07-22  7:10                                           ` tomas
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
  -- strict thread matches above, loose matches on Subject: below --
2019-03-20 11:59 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
     [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
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

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.