command: Make command names available for translation.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 15 May 2023 05:48:46 +0000 (22:48 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 15 May 2023 05:48:59 +0000 (22:48 -0700)
PSPP command names should appear in translated form in labels in output,
but they didn't because their names weren't marked for translation.  This
fixes that problem.

The names still won't appear translated until translators add translations
for them.

Thanks to Ali Alhaidary for reporting the bug at
https://savannah.gnu.org/bugs/?62982

src/language/command.c
src/language/command.def
src/language/command.h
src/language/lexer/segment.c

index 97e01fca5a28aaf517d89470a97b4486e5ab7026..ab5391dc2e7d581dd65e08ebf888d6616dfbf51d 100644 (file)
@@ -111,12 +111,13 @@ struct command
     enum states states;         /* States in which command is allowed. */
     enum flags flags;           /* Other command requirements. */
     const char *name;          /* Command name. */
+    const char *label;         /* Translated command label. */
     int (*function) (struct lexer *, struct dataset *);        /* Function to call. */
   };
 
 /* Define the command array. */
-#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) {STATES, FLAGS, NAME, FUNCTION},
-#define UNIMPL_CMD(NAME, DESCRIPTION) {S_ANY, 0, NAME, NULL},
+#define DEF_CMD(STATES, FLAGS, NAME, LABEL, FUNCTION) {STATES, FLAGS, NAME, LABEL, FUNCTION},
+#define UNIMPL_CMD(NAME, DESCRIPTION) {S_ANY, 0, NAME, NAME, NULL},
 static const struct command commands[] =
   {
 #include "command.def"
@@ -201,9 +202,9 @@ do_parse_command (struct lexer *lexer,
       goto finish;
     }
 
-  nesting_level = output_open_group (group_item_create_nocopy (
-                                       utf8_to_title (command->name),
-                                       utf8_to_title (command->name)));
+  nesting_level = output_open_group (group_item_create (
+                                       command->name,
+                                       gettext (command->label)));
 
   int end = n_tokens - 1;
   if (command->function == NULL)
index f5cb1611a170c55090f93b4f5295decbb1caf22b..f91669b88bcffe9f14276dd44748cbc1f626f786 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 /* Utility commands acceptable anywhere. */
-DEF_CMD (S_ANY, F_ENHANCED, "CLOSE FILE HANDLE", cmd_close_file_handle)
-DEF_CMD (S_ANY, 0, "CACHE", cmd_cache)
-DEF_CMD (S_ANY, 0, "CD", cmd_cd)
-DEF_CMD (S_ANY, 0, "DEFINE", cmd_define)
-DEF_CMD (S_ANY, 0, "DISPLAY MACROS", cmd_display_macros)
-DEF_CMD (S_ANY, 0, "DO REPEAT", cmd_do_repeat)
-DEF_CMD (S_ANY, 0, "END REPEAT", cmd_end_repeat)
-DEF_CMD (S_ANY, 0, "ECHO", cmd_echo)
-DEF_CMD (S_ANY, 0, "ERASE", cmd_erase)
-DEF_CMD (S_ANY, 0, "EXIT", cmd_finish)
-DEF_CMD (S_ANY, 0, "FILE HANDLE", cmd_file_handle)
-DEF_CMD (S_ANY, 0, "FILE LABEL", cmd_file_label)
-DEF_CMD (S_ANY, 0, "FINISH", cmd_finish)
-DEF_CMD (S_ANY, 0, "HOST", cmd_host)
-DEF_CMD (S_ANY, 0, "INCLUDE", cmd_include)
-DEF_CMD (S_ANY, 0, "INSERT", cmd_insert)
-DEF_CMD (S_ANY, 0, "MATRIX", cmd_matrix)
-DEF_CMD (S_ANY, 0, "MCONVERT", cmd_mconvert)
-DEF_CMD (S_ANY, 0, "N OF CASES", cmd_n_of_cases)
-DEF_CMD (S_ANY, F_ABBREV, "N", cmd_n_of_cases)
-DEF_CMD (S_ANY, 0, "NEW FILE", cmd_new_file)
-DEF_CMD (S_ANY, 0, "OUTPUT MODIFY", cmd_output_modify)
-DEF_CMD (S_ANY, 0, "PERMISSIONS", cmd_permissions)
-DEF_CMD (S_ANY, 0, "PRESERVE", cmd_preserve)
-DEF_CMD (S_ANY, F_ABBREV, "Q", cmd_finish)
-DEF_CMD (S_ANY, 0, "QUIT", cmd_finish)
-DEF_CMD (S_ANY, 0, "RESTORE", cmd_restore)
-DEF_CMD (S_ANY, 0, "SET", cmd_set)
-DEF_CMD (S_ANY, 0, "SHOW", cmd_show)
-DEF_CMD (S_ANY, 0, "SUBTITLE", cmd_subtitle)
-DEF_CMD (S_ANY, 0, "SYSFILE INFO", cmd_sysfile_info)
-DEF_CMD (S_ANY, 0, "TITLE", cmd_title)
+DEF_CMD (S_ANY, F_ENHANCED, "CLOSE FILE HANDLE", N_("Close File Handle"), cmd_close_file_handle)
+DEF_CMD (S_ANY, 0, "CACHE", N_("Cache"), cmd_cache)
+DEF_CMD (S_ANY, 0, "CD", N_("CD"), cmd_cd)
+DEF_CMD (S_ANY, 0, "DEFINE", N_("Define"), cmd_define)
+DEF_CMD (S_ANY, 0, "DISPLAY MACROS", N_("Display Macros"), cmd_display_macros)
+DEF_CMD (S_ANY, 0, "DO REPEAT", N_("Do Repeat"), cmd_do_repeat)
+DEF_CMD (S_ANY, 0, "END REPEAT", N_("End Repeat"), cmd_end_repeat)
+DEF_CMD (S_ANY, 0, "ECHO", N_("Echo"), cmd_echo)
+DEF_CMD (S_ANY, 0, "ERASE", N_("Erase"), cmd_erase)
+DEF_CMD (S_ANY, 0, "EXIT", N_("Exit"), cmd_finish)
+DEF_CMD (S_ANY, 0, "FILE HANDLE", N_("File Handle"), cmd_file_handle)
+DEF_CMD (S_ANY, 0, "FILE LABEL", N_("File Label"), cmd_file_label)
+DEF_CMD (S_ANY, 0, "FINISH", N_("Finish"), cmd_finish)
+DEF_CMD (S_ANY, 0, "HOST", N_("Host"), cmd_host)
+DEF_CMD (S_ANY, 0, "INCLUDE", N_("Include"), cmd_include)
+DEF_CMD (S_ANY, 0, "INSERT", N_("Insert"), cmd_insert)
+DEF_CMD (S_ANY, 0, "MATRIX", N_("Matrix"), cmd_matrix)
+DEF_CMD (S_ANY, 0, "MCONVERT", N_("Matri Convert"), cmd_mconvert)
+DEF_CMD (S_ANY, 0, "N OF CASES", N_("N of Cases"), cmd_n_of_cases)
+DEF_CMD (S_ANY, F_ABBREV, "N", N_("N"), cmd_n_of_cases)
+DEF_CMD (S_ANY, 0, "NEW FILE", N_("New File"), cmd_new_file)
+DEF_CMD (S_ANY, 0, "OUTPUT MODIFY", N_("Output Modify"), cmd_output_modify)
+DEF_CMD (S_ANY, 0, "PERMISSIONS", N_("Permissions"), cmd_permissions)
+DEF_CMD (S_ANY, 0, "PRESERVE", N_("Preserve"), cmd_preserve)
+DEF_CMD (S_ANY, F_ABBREV, "Q", N_("Quit"), cmd_finish)
+DEF_CMD (S_ANY, 0, "QUIT", N_("Quit"), cmd_finish)
+DEF_CMD (S_ANY, 0, "RESTORE", N_("Restore"), cmd_restore)
+DEF_CMD (S_ANY, 0, "SET", N_("Set"), cmd_set)
+DEF_CMD (S_ANY, 0, "SHOW", N_("Show"), cmd_show)
+DEF_CMD (S_ANY, 0, "SUBTITLE", N_("Subtitle"), cmd_subtitle)
+DEF_CMD (S_ANY, 0, "SYSFILE INFO", N_("Sysfile Info"), cmd_sysfile_info)
+DEF_CMD (S_ANY, 0, "TITLE", N_("Title"), cmd_title)
 
 /* Commands that define (or replace) the active dataset. */
-DEF_CMD (S_INITIAL | S_DATA, 0, "ADD FILES", cmd_add_files)
+DEF_CMD (S_INITIAL | S_DATA, 0, "ADD FILES", N_("Add Files"), cmd_add_files)
 DEF_CMD (S_INITIAL | S_DATA | S_INPUT_PROGRAM | S_FILE_TYPE | S_NESTED_INPUT_PROGRAM,
-         0, "DATA LIST", cmd_data_list)
-DEF_CMD (S_INITIAL | S_DATA, 0, "GET", cmd_get)
-DEF_CMD (S_INITIAL | S_DATA, 0, "GET DATA", cmd_get_data)
-DEF_CMD (S_INITIAL | S_DATA, 0, "IMPORT", cmd_import)
-DEF_CMD (S_INITIAL | S_DATA, 0, "INPUT PROGRAM", cmd_input_program)
-DEF_CMD (S_INITIAL | S_DATA, 0, "MATCH FILES", cmd_match_files)
-DEF_CMD (S_INITIAL | S_DATA, 0, "MATRIX DATA", cmd_matrix_data)
-DEF_CMD (S_INITIAL | S_DATA, 0, "UPDATE", cmd_update)
-DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET ACTIVATE", cmd_dataset_activate)
-DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET DECLARE", cmd_dataset_declare)
-DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET CLOSE", cmd_dataset_close)
-DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET COPY", cmd_dataset_copy)
-DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET NAME", cmd_dataset_name)
-DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET DISPLAY", cmd_dataset_display)
+         0, "DATA LIST", N_("Data List"), cmd_data_list)
+DEF_CMD (S_INITIAL | S_DATA, 0, "GET", N_("Get"), cmd_get)
+DEF_CMD (S_INITIAL | S_DATA, 0, "GET DATA", N_("Get Data"), cmd_get_data)
+DEF_CMD (S_INITIAL | S_DATA, 0, "IMPORT", N_("Import"), cmd_import)
+DEF_CMD (S_INITIAL | S_DATA, 0, "INPUT PROGRAM", N_("Input Program"), cmd_input_program)
+DEF_CMD (S_INITIAL | S_DATA, 0, "MATCH FILES", N_("Match Files"), cmd_match_files)
+DEF_CMD (S_INITIAL | S_DATA, 0, "MATRIX DATA", N_("Matrix Data"), cmd_matrix_data)
+DEF_CMD (S_INITIAL | S_DATA, 0, "UPDATE", N_("Update"), cmd_update)
+DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET ACTIVATE", N_("Dataset Activate"), cmd_dataset_activate)
+DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET DECLARE", N_("Dataset Declare"), cmd_dataset_declare)
+DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET CLOSE", N_("Dataset Close"), cmd_dataset_close)
+DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET COPY", N_("Dataset Copy"), cmd_dataset_copy)
+DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET NAME", N_("Dataset Name"), cmd_dataset_name)
+DEF_CMD (S_INITIAL | S_DATA, 0, "DATASET DISPLAY", N_("Dataset Display"), cmd_dataset_display)
 
 /* Utilities that may appear after active file definition or within INPUT PROGRAM. */
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "ADD VALUE LABELS", cmd_add_value_labels)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "ADD DOCUMENT", cmd_add_documents)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "APPLY DICTIONARY", cmd_apply_dictionary)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DATAFILE ATTRIBUTE", cmd_datafile_attribute)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DISPLAY", cmd_display)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, F_TESTING, "DISPLAY VARIABLE SETS", cmd_display_variable_sets)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DOCUMENT", cmd_document)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DROP DOCUMENTS", cmd_drop_documents)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "FORMATS", cmd_formats)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "LEAVE", cmd_leave)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "MISSING VALUES", cmd_missing_values)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "MRSETS", cmd_mrsets)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT FORMATS", cmd_print_formats)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "SPLIT FILE", cmd_split_file)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VALUE LABELS", cmd_value_labels)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE ALIGNMENT", cmd_variable_alignment)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE ATTRIBUTE", cmd_variable_attribute)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE LABELS", cmd_variable_labels)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE LEVEL", cmd_variable_level)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE ROLE", cmd_variable_role)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE WIDTH", cmd_variable_width)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VECTOR", cmd_vector)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "WEIGHT", cmd_weight)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "WRITE FORMATS", cmd_write_formats)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "ADD VALUE LABELS", N_("Add Value Labels"), cmd_add_value_labels)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "ADD DOCUMENT", N_("Add Document"), cmd_add_documents)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "APPLY DICTIONARY", N_("Apply Dictionary"), cmd_apply_dictionary)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DATAFILE ATTRIBUTE", N_("Datafile Attribute"), cmd_datafile_attribute)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DISPLAY", N_("Display"), cmd_display)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, F_TESTING, "DISPLAY VARIABLE SETS", N_("Display Variable Sets"), cmd_display_variable_sets)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DOCUMENT", N_("Document"), cmd_document)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DROP DOCUMENTS", N_("Drop Documents"), cmd_drop_documents)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "FORMATS", N_("Formats"), cmd_formats)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "LEAVE", N_("Leave"), cmd_leave)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "MISSING VALUES", N_("Missing Values"), cmd_missing_values)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "MRSETS", N_("Multiple Response Sets"), cmd_mrsets)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT FORMATS", N_("Print Formats"), cmd_print_formats)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "SPLIT FILE", N_("Split File"), cmd_split_file)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VALUE LABELS", N_("Value Labels"), cmd_value_labels)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE ALIGNMENT", N_("Variable Alignment"), cmd_variable_alignment)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE ATTRIBUTE", N_("Variable Attribute"), cmd_variable_attribute)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE LABELS", N_("Variable Labels"), cmd_variable_labels)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE LEVEL", N_("Variable Level"), cmd_variable_level)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE ROLE", N_("Variable Role"), cmd_variable_role)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VARIABLE WIDTH", N_("Variable Width"), cmd_variable_width)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "VECTOR", N_("Vector"), cmd_vector)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "WEIGHT", N_("Weight"), cmd_weight)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "WRITE FORMATS", N_("Write Formats"), cmd_write_formats)
 
 /* Transformations. */
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "BREAK", cmd_break)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "COMPUTE", cmd_compute)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DO IF", cmd_do_if)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "IF", cmd_if)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "LOOP", cmd_loop)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "NUMERIC", cmd_numeric)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT EJECT", cmd_print_eject)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT SPACE", cmd_print_space)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT", cmd_print)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "RECODE", cmd_recode)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "STRING", cmd_string)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "WRITE", cmd_write)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, F_ENHANCED, "XEXPORT", cmd_xexport)
-DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "XSAVE", cmd_xsave)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "BREAK", N_("Break"), cmd_break)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "COMPUTE", N_("Compute"), cmd_compute)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "DO IF", N_("Do If"), cmd_do_if)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "IF", N_("If"), cmd_if)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "LOOP", N_("Loop"), cmd_loop)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "NUMERIC", N_("Numeric"), cmd_numeric)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT EJECT", N_("Print Eject"), cmd_print_eject)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT SPACE", N_("Print Space"), cmd_print_space)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "PRINT", N_("Print"), cmd_print)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "RECODE", N_("Recode"), cmd_recode)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "STRING", N_("String"), cmd_string)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "WRITE", N_("Write"), cmd_write)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, F_ENHANCED, "XEXPORT", N_("XExport"), cmd_xexport)
+DEF_CMD (S_DATA | S_INPUT_PROGRAM | S_NESTED_ANY, 0, "XSAVE", N_("XSave"), cmd_xsave)
 
-/* Restricted transformations. */
-DEF_CMD (S_DATA | S_NESTED_DATA, 0, "SELECT IF", cmd_select_if)
+/* restricted Transformations. */
+DEF_CMD (S_DATA | S_NESTED_DATA, 0, "SELECT IF", N_("Select If"), cmd_select_if)
 
 /* Commands that may appear after active dataset definition. */
-DEF_CMD (S_DATA, 0, "AGGREGATE", cmd_aggregate)
-DEF_CMD (S_DATA, 0, "AUTORECODE", cmd_autorecode)
-DEF_CMD (S_DATA, 0, "BEGIN DATA", cmd_begin_data)
-DEF_CMD (S_DATA, 0, "COUNT", cmd_count)
-DEF_CMD (S_DATA, 0, "CROSSTABS", cmd_crosstabs)
-DEF_CMD (S_DATA, 0, "CTABLES", cmd_ctables)
-DEF_CMD (S_DATA, 0, "CORRELATIONS", cmd_correlations)
-DEF_CMD (S_DATA, 0, "DELETE VARIABLES", cmd_delete_variables)
-DEF_CMD (S_DATA, 0, "DESCRIPTIVES", cmd_descriptives)
-DEF_CMD (S_DATA, 0, "EXAMINE", cmd_examine)
-DEF_CMD (S_DATA, 0, "EXECUTE", cmd_execute)
-DEF_CMD (S_DATA, 0, "EXPORT", cmd_export)
-DEF_CMD (S_DATA, 0, "FACTOR", cmd_factor)
-DEF_CMD (S_DATA, 0, "FILTER", cmd_filter)
-DEF_CMD (S_DATA, 0, "FLIP", cmd_flip)
-DEF_CMD (S_DATA, 0, "FREQUENCIES", cmd_frequencies)
-DEF_CMD (S_DATA, 0, "GLM", cmd_glm)
-DEF_CMD (S_DATA, 0, "GRAPH", cmd_graph)
-DEF_CMD (S_DATA, 0, "LIST", cmd_list)
-DEF_CMD (S_DATA, 0, "LOGISTIC REGRESSION", cmd_logistic)
-DEF_CMD (S_DATA, 0, "MEANS", cmd_means)
-DEF_CMD (S_DATA, 0, "NPAR TESTS", cmd_npar_tests)
-DEF_CMD (S_DATA, 0, "ONEWAY", cmd_oneway)
-DEF_CMD (S_DATA, 0, "PEARSON CORRELATIONS", cmd_correlations)
-DEF_CMD (S_DATA, 0, "QUICK CLUSTER", cmd_quick_cluster)
-DEF_CMD (S_DATA, 0, "RANK", cmd_rank)
-DEF_CMD (S_DATA, 0, "REGRESSION",  cmd_regression)
-DEF_CMD (S_DATA, 0, "RELIABILITY", cmd_reliability)
-DEF_CMD (S_DATA, 0, "RENAME VARIABLES", cmd_rename_variables)
-DEF_CMD (S_DATA, 0, "ROC", cmd_roc)
-DEF_CMD (S_DATA, 0, "SAMPLE", cmd_sample)
-DEF_CMD (S_DATA, 0, "SAVE", cmd_save)
-DEF_CMD (S_DATA, 0, "SAVE DATA COLLECTION", cmd_save_data_collection)
-DEF_CMD (S_DATA, 0, "SAVE TRANSLATE", cmd_save_translate)
-DEF_CMD (S_DATA, 0, "SORT CASES", cmd_sort_cases)
-DEF_CMD (S_DATA, 0, "SORT VARIABLES", cmd_sort_variables)
-DEF_CMD (S_DATA, 0, "T-TEST", cmd_t_test)
-DEF_CMD (S_DATA, 0, "TEMPORARY", cmd_temporary)
-DEF_CMD (S_DATA, 0, "USE", cmd_use)
+DEF_CMD (S_DATA, 0, "AGGREGATE", N_("Aggregate"), cmd_aggregate)
+DEF_CMD (S_DATA, 0, "AUTORECODE", N_("Autorecode"), cmd_autorecode)
+DEF_CMD (S_DATA, 0, "BEGIN DATA", N_("Begin Data"), cmd_begin_data)
+DEF_CMD (S_DATA, 0, "COUNT", N_("Count"), cmd_count)
+DEF_CMD (S_DATA, 0, "CROSSTABS", N_("Crosstabs"), cmd_crosstabs)
+DEF_CMD (S_DATA, 0, "CTABLES", N_("Ctables"), cmd_ctables)
+DEF_CMD (S_DATA, 0, "CORRELATIONS", N_("Correlations"), cmd_correlations)
+DEF_CMD (S_DATA, 0, "DELETE VARIABLES", N_("Delete Variables"), cmd_delete_variables)
+DEF_CMD (S_DATA, 0, "DESCRIPTIVES", N_("Descriptives"), cmd_descriptives)
+DEF_CMD (S_DATA, 0, "EXAMINE", N_("Examine"), cmd_examine)
+DEF_CMD (S_DATA, 0, "EXECUTE", N_("Execute"), cmd_execute)
+DEF_CMD (S_DATA, 0, "EXPORT", N_("Export"), cmd_export)
+DEF_CMD (S_DATA, 0, "FACTOR", N_("Factor"), cmd_factor)
+DEF_CMD (S_DATA, 0, "FILTER", N_("Filter"), cmd_filter)
+DEF_CMD (S_DATA, 0, "FLIP", N_("Flip"), cmd_flip)
+DEF_CMD (S_DATA, 0, "FREQUENCIES", N_("Frequencies"), cmd_frequencies)
+DEF_CMD (S_DATA, 0, "GLM", N_("GLM"), cmd_glm)
+DEF_CMD (S_DATA, 0, "GRAPH", N_("Graph"), cmd_graph)
+DEF_CMD (S_DATA, 0, "LIST", N_("List"), cmd_list)
+DEF_CMD (S_DATA, 0, "LOGISTIC REGRESSION", N_("Logistic Regression"), cmd_logistic)
+DEF_CMD (S_DATA, 0, "MEANS", N_("Means"), cmd_means)
+DEF_CMD (S_DATA, 0, "NPAR TESTS", N_("Nonparametric Tests"), cmd_npar_tests)
+DEF_CMD (S_DATA, 0, "ONEWAY", N_("Oneway"), cmd_oneway)
+DEF_CMD (S_DATA, 0, "PEARSON CORRELATIONS", N_("Pearson Correlations"), cmd_correlations)
+DEF_CMD (S_DATA, 0, "QUICK CLUSTER", N_("Quick Cluster"), cmd_quick_cluster)
+DEF_CMD (S_DATA, 0, "RANK", N_("Rank"), cmd_rank)
+DEF_CMD (S_DATA, 0, "REGRESSION", N_("Regression"),  cmd_regression)
+DEF_CMD (S_DATA, 0, "RELIABILITY", N_("Reliability"), cmd_reliability)
+DEF_CMD (S_DATA, 0, "RENAME VARIABLES", N_("Rename Variables"), cmd_rename_variables)
+DEF_CMD (S_DATA, 0, "ROC", N_("ROC"), cmd_roc)
+DEF_CMD (S_DATA, 0, "SAMPLE", N_("Sample"), cmd_sample)
+DEF_CMD (S_DATA, 0, "SAVE", N_("Save"), cmd_save)
+DEF_CMD (S_DATA, 0, "SAVE DATA COLLECTION", N_("Save Data Collection"), cmd_save_data_collection)
+DEF_CMD (S_DATA, 0, "SAVE TRANSLATE", N_("Save Translate"), cmd_save_translate)
+DEF_CMD (S_DATA, 0, "SORT CASES", N_("Sort Cases"), cmd_sort_cases)
+DEF_CMD (S_DATA, 0, "SORT VARIABLES", N_("Sort Variables"), cmd_sort_variables)
+DEF_CMD (S_DATA, 0, "T-TEST", N_("T-Test"), cmd_t_test)
+DEF_CMD (S_DATA, 0, "TEMPORARY", N_("Temporary"), cmd_temporary)
+DEF_CMD (S_DATA, 0, "USE", N_("Use"), cmd_use)
 
 /* Commands valid only inside INPUT PROGRAM. */
-DEF_CMD (S_INPUT_PROGRAM | S_NESTED_INPUT_PROGRAM, 0, "END CASE", cmd_end_case)
-DEF_CMD (S_INPUT_PROGRAM | S_NESTED_INPUT_PROGRAM, 0, "END FILE", cmd_end_file)
-DEF_CMD (S_INPUT_PROGRAM | S_NESTED_INPUT_PROGRAM, 0, "REREAD", cmd_reread)
+DEF_CMD (S_INPUT_PROGRAM | S_NESTED_INPUT_PROGRAM, 0, "END CASE", N_("End Case"), cmd_end_case)
+DEF_CMD (S_INPUT_PROGRAM | S_NESTED_INPUT_PROGRAM, 0, "END FILE", N_("End File"), cmd_end_file)
+DEF_CMD (S_INPUT_PROGRAM | S_NESTED_INPUT_PROGRAM, 0, "REREAD", N_("Reread"), cmd_reread)
 
 /* Not really commands, but part of LOOP and DO IF syntax. */
-DEF_CMD (S_ANY, 0, "ELSE IF", cmd_inside_do_if)
-DEF_CMD (S_ANY, 0, "ELSE", cmd_inside_do_if)
-DEF_CMD (S_ANY, 0, "END IF", cmd_inside_do_if)
-DEF_CMD (S_ANY, 0, "END LOOP", cmd_inside_loop)
+DEF_CMD (S_ANY, 0, "ELSE IF", N_("Else If"), cmd_inside_do_if)
+DEF_CMD (S_ANY, 0, "ELSE", N_("Else"), cmd_inside_do_if)
+DEF_CMD (S_ANY, 0, "END IF", N_("End If"), cmd_inside_do_if)
+DEF_CMD (S_ANY, 0, "END LOOP", N_("End Loop"), cmd_inside_loop)
 
 /* Commands for testing PSPP. */
-DEF_CMD (S_ANY, F_TESTING, "DEBUG EXPAND", cmd_debug_expand)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG EVALUATE", cmd_debug_evaluate)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG FORMAT GUESSER", cmd_debug_format_guesser)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG MOMENTS", cmd_debug_moments)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG PAPER SIZE", cmd_debug_paper_size)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG POOL", cmd_debug_pool)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG FLOAT FORMAT", cmd_debug_float_format)
-DEF_CMD (S_ANY, F_TESTING, "DEBUG XFORM FAIL", cmd_debug_xform_fail)
-DEF_CMD (S_DATA, F_TESTING, "DEBUG MATRIX READ", cmd_debug_matrix_read)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG EXPAND", "DEBUG EXPAND", cmd_debug_expand)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG EVALUATE", "DEBUG EVALUATE", cmd_debug_evaluate)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG FORMAT GUESSER", "DEBUG FORMAT GUESSER", cmd_debug_format_guesser)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG MOMENTS", "DEBUG MOMENTS", cmd_debug_moments)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG PAPER SIZE", "DEBUG PAPER SIZE", cmd_debug_paper_size)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG POOL", "DEBUG POOL", cmd_debug_pool)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG FLOAT FORMAT", "DEBUG FLOAT FORMAT", cmd_debug_float_format)
+DEF_CMD (S_ANY, F_TESTING, "DEBUG XFORM FAIL", "DEBUG XFORM FAIL", cmd_debug_xform_fail)
+DEF_CMD (S_DATA, F_TESTING, "DEBUG MATRIX READ", "DEBUG MATRIX READ", cmd_debug_matrix_read)
 
 /* Unimplemented commands. */
 UNIMPL_CMD ("2SLS", "Two stage least squares regression")
index ecd2a752659d663366c3788fe7c9f5d105a36dfe..71b6a38e3c3afbbc916a5181871b0be9d1480060 100644 (file)
@@ -63,7 +63,7 @@ const char *cmd_complete (const char *, const struct command **);
 struct dataset;
 
 /* Prototype all the command functions. */
-#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) int FUNCTION (struct lexer *, struct dataset *);
+#define DEF_CMD(STATES, FLAGS, NAME, LABEL, FUNCTION) int FUNCTION (struct lexer *, struct dataset *);
 #define UNIMPL_CMD(NAME, DESCRIPTION)
 #include "command.def"
 #undef DEF_CMD
index 346910898ce3898b4bec6c62563a1a6f8dfe10bd..a7bce8b6e7b9ef96440e07e0cf89cdbedbc38eb1 100644 (file)
@@ -1087,7 +1087,7 @@ compare_commands (const void *a_, const void *b_)
 static const char **
 segmenter_get_command_name_candidates (unsigned char first)
 {
-#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) NAME,
+#define DEF_CMD(STATES, FLAGS, NAME, LABEL, FUNCTION) NAME,
 #define UNIMPL_CMD(NAME, DESCRIPTION) NAME,
   static const char *commands[] =
     {