[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Emacs i18n
From: |
Juri Linkov |
Subject: |
Re: Emacs i18n |
Date: |
Tue, 12 Mar 2019 23:45:07 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) |
>> 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 ", ")))
""))
- Re: Emacs i18n, (continued)
- Re: Emacs i18n, Paul Eggert, 2019/03/06
- Re: Emacs i18n, Eli Zaretskii, 2019/03/06
- Re: Emacs i18n, Paul Eggert, 2019/03/06
- Re: Emacs i18n, Eli Zaretskii, 2019/03/06
- Re: Emacs i18n, Paul Eggert, 2019/03/07
- Re: Emacs i18n, Jean-Christophe Helary, 2019/03/06
- Re: Emacs i18n, Paul Eggert, 2019/03/07
- Re: Emacs i18n, Richard Stallman, 2019/03/07
- Re: Emacs i18n, Juri Linkov, 2019/03/11
- Re: Emacs i18n, Paul Eggert, 2019/03/11
- Re: Emacs i18n,
Juri Linkov <=
- Re: Emacs i18n, Juri Linkov, 2019/03/17
- Re: Emacs i18n, Juri Linkov, 2019/03/18
- Re: Emacs i18n, Paul Eggert, 2019/03/18
- Re: Emacs i18n, Juri Linkov, 2019/03/19
- Re: Emacs i18n, Jean-Christophe Helary, 2019/03/11
- Re: Emacs i18n, Michael Albinus, 2019/03/12
- Re: Emacs i18n, Paul Eggert, 2019/03/06
- Re: Emacs i18n, Eli Zaretskii, 2019/03/06
- Re: Emacs i18n, Paul Eggert, 2019/03/06
- Re: Emacs i18n, Eli Zaretskii, 2019/03/06