@c This file is part of the GNU gettext manual.
@c Copyright (C) 1995-2020 Free Software Foundation, Inc.
@c See the file gettext.texi for copying conditions.

@node clisp C
@subsection GNU clisp C sources
@cindex clisp C sources

@table @asis
@item RPMs
clisp

@item Ubuntu packages
clisp

@item File extension
@code{d}

@item String syntax
@code{"abc"}

@item gettext shorthand
@code{ENGLISH ? "abc" : ""}
@*@code{GETTEXT("abc")}
@*@code{GETTEXTL("abc")}

@item gettext/ngettext functions
@code{clgettext}, @code{clgettextl}

@item textdomain
---

@item bindtextdomain
---

@item setlocale
automatic

@item Prerequisite
@code{#include "lispbibl.c"}

@item Use or emulate GNU gettext
use

@item Extractor
@code{clisp-xgettext}

@item Formatting with positions
@code{fprintf "%2$d %1$d"}

@item Portability
On platforms without gettext, no translation.

@item po-mode marking
---
@end table
