TITLE MAP-LIST MACRO-LIST ? MODULE-LIST ? STATE-LIST
 
 IM-DECLARATION ::= '(' 'input-method' LANGUAGE NAME ')'
-DESCRIPTION ::= '(' 'description' MTEXT ')'
+DESCRIPTION ::= '(' 'description' [ MTEXT-OR-GETTEXT | nil] ')'
 VARIABLE-LIST ::= '(' 'variable' VARIABLE-DECLARATION * ')'
 COMMAND-LIST ::= '(' 'command' COMMAND-DECLARATION * ')'
 TITLE ::= '(' 'title' TITLE-TEXT ')'
 
 VARIABLE-DECLARATION ::=
-    '(' VAR-NAME [ VAR-DESCRIPTION | nil ] VALUE VALUE-CANDIDATE * ')'
+    '(' VAR-NAME [ MTEXT-OR-GETTEXT | nil ] VALUE VALUE-CANDIDATE * ')'
 
 COMMAND-DECLARATION ::=
-    '(' CMD-NAME [ CMD-DESCRIPTION | nil ] KEYSEQ * ')'
+    '(' CMD-NAME [ MTEXT-OR-GETTEXT | nil ] KEYSEQ * ')'
+
+MTEXT-OR-GETTEXT ::=
+    [ MTEXT | '(' '_' MTEXT ')']
 
 LANGUAGE ::= SYMBOL
 NAME ::= SYMBOL
-IM-DESCRIPTION ::= MTEXT
 VAR-NAME ::= SYMBOL
 VAR-DESCRIPTION ::= MTEXT
 VALUE ::= MTEXT | SYMBOL | INTEGER
 
 @c IM-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Î¸À¸ì¤È̾Á°¤ò»ØÄꤹ¤ë¡£
 
-@c DESCRIPTION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤ÎÀâÌÀ¤Ç¤¢¤ë @c MTEXT ¤ò»ØÄꤹ¤ë¡£
+@c DESCRIPTION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤ÎÀâÌÀ¤ò @c MTEXT-OR-GETTEXT ¤Ç»ØÄꤹ
+¤ë¡£¤â¤·¤³¤ì¤¬£²ÈÖÌܤηÁ¼°¤ò¼è¤Ã¤Æ¤¤¤ì¤Ð¡¢ @c MTEXT ¤Ï¸½ºß¤Î¥í¥±¡¼¥ë¤Ë
+½¾¤Ã¤Æ "gettext" ¤Ë¤è¤Ã¤ÆËÝÌõ¤µ¤ì¤ë¡ÊËÝÌõʸ¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡Ë¡£
 
 @c VARIABLE-DECLARATION ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤Ç»ÈÍѤµ¤ì¤ëÊÑ¿ô¤òÀë¸À¤¹¤ë¡£
 ÊÑ¿ô¤ò¥Ç¥Õ¥©¥ë¥ÈÃͤ˽é´ü²½¤·¤¿¤ê¡¢¥æ¡¼¥¶¤¬¥«¥¹¥¿¥Þ¥¤¥º¤·¤¿¤ê¤¹¤ë¾ì¹ç¤Ë
 
     TITLE MAP-LIST MACRO-LIST ? MODULE-LIST ? STATE-LIST
 
 IM-DECLARATION ::= '(' 'input-method' LANGUAGE NAME ')'
-DESCRIPTION ::= '(' 'description' MTEXT ')'
+DESCRIPTION ::= '(' 'description' [ MTEXT-OR-GETTEXT | nil] ')'
 VARIABLE-LIST ::= '(' 'variable' VARIABLE-DECLARATION * ')'
 COMMAND-LIST ::= '(' 'command' COMMAND-DECLARATION * ')'
 TITLE ::= '(' 'title' TITLE-TEXT ')'
 
 VARIABLE-DECLARATION ::=
-    '(' VAR-NAME [ VAR-DESCRIPTION | nil ] VALUE VALUE-CANDIDATE * ')'
+    '(' VAR-NAME [ MTEXT-OR-GETTEXT | nil ] VALUE VALUE-CANDIDATE * ')'
 
 COMMAND-DECLARATION ::=
-    '(' CMD-NAME [ CMD-DESCRIPTION | nil ] KEYSEQ * ')'
+    '(' CMD-NAME [ MTEXT-OR-GETTEXT | nil ] KEYSEQ * ')'
+
+MTEXT-OR-GETTEXT ::=
+    [ MTEXT | '(' '_' MTEXT ')']
 
 LANGUAGE ::= SYMBOL
 NAME ::= SYMBOL
 @c IM-DECLARATION specifies the language and name of this input
 method.
 
-@c DESCRIPTION specifies @c MTEXT as the description text of this
-input method.
+@c DESCRIPTION specifies the description text of this input method by
+MTEXT-OR-GETTEXT.  It it takes the second form, the text is translated
+according to the current locale by "gettext" (if the translation is
+provided).
 
 @c VARIABLE-DECLARATION declares a variable used in this input method.
 If a variable must be initialized to the default value, or is to be