aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJuri Linkov2019-03-25 23:32:09 +0200
committerJuri Linkov2019-03-25 23:32:09 +0200
commit389475dbcc4fb8ac52367e103306a632ef3fd101 (patch)
tree2ea141875aa59f25cb10725aca8547629973959a /src
parent1f8a6b56a5c4342b1fc3ec1d62b9418656a6f953 (diff)
downloademacs-389475dbcc4fb8ac52367e103306a632ef3fd101.tar.gz
emacs-389475dbcc4fb8ac52367e103306a632ef3fd101.zip
* lisp/international/mule-cmds.el (ngettext): Move to editfns.c.
* src/editfns.c (Fngettext): Move from mule-cmds.el and use gettext's ngettext when available.
Diffstat (limited to 'src')
-rw-r--r--src/editfns.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/editfns.c b/src/editfns.c
index ac9b871835e..ab48cdb6fd1 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -53,6 +53,12 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
53#include "window.h" 53#include "window.h"
54#include "blockinput.h" 54#include "blockinput.h"
55 55
56#ifdef _LIBC
57# include <libintl.h>
58#else
59# include "gettext.h"
60#endif
61
56static void update_buffer_properties (ptrdiff_t, ptrdiff_t); 62static void update_buffer_properties (ptrdiff_t, ptrdiff_t);
57static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool); 63static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool);
58 64
@@ -2836,6 +2842,35 @@ usage: (save-restriction &rest BODY) */)
2836 return unbind_to (count, val); 2842 return unbind_to (count, val);
2837} 2843}
2838 2844
2845/* i18n (internationalization). */
2846
2847DEFUN ("ngettext", Fngettext, Sngettext, 3, 3, 0,
2848 doc: /* Return the plural form of the translation of the string.
2849This function is similar to the `gettext' function as it finds the message
2850catalogs in the same way. But it takes two extra arguments. The MSGID
2851parameter must contain the singular form of the string to be converted.
2852It is also used as the key for the search in the catalog.
2853The MSGID_PLURAL parameter is the plural form. The parameter N is used
2854to determine the plural form. If no message catalog is found MSGID is
2855returned if N is equal to 1, otherwise MSGID_PLURAL. */)
2856 (Lisp_Object msgid, Lisp_Object msgid_plural, Lisp_Object n)
2857{
2858 CHECK_STRING (msgid);
2859 CHECK_STRING (msgid_plural);
2860 CHECK_FIXNUM (n);
2861
2862#ifdef _LIBGETTEXT_H
2863 return build_string (ngettext (SSDATA (msgid),
2864 SSDATA (msgid_plural),
2865 XFIXNUM (n)));
2866#else
2867 if (XFIXNUM (n) == 1)
2868 return msgid;
2869 else
2870 return msgid_plural;
2871#endif
2872}
2873
2839DEFUN ("message", Fmessage, Smessage, 1, MANY, 0, 2874DEFUN ("message", Fmessage, Smessage, 1, MANY, 0,
2840 doc: /* Display a message at the bottom of the screen. 2875 doc: /* Display a message at the bottom of the screen.
2841The message also goes into the `*Messages*' buffer, if `message-log-max' 2876The message also goes into the `*Messages*' buffer, if `message-log-max'
@@ -4554,6 +4589,8 @@ it to be non-nil. */);
4554 defsubr (&Sinsert_char); 4589 defsubr (&Sinsert_char);
4555 defsubr (&Sinsert_byte); 4590 defsubr (&Sinsert_byte);
4556 4591
4592 defsubr (&Sngettext);
4593
4557 defsubr (&Suser_login_name); 4594 defsubr (&Suser_login_name);
4558 defsubr (&Sgroup_name); 4595 defsubr (&Sgroup_name);
4559 defsubr (&Suser_real_login_name); 4596 defsubr (&Suser_real_login_name);