From 1a32cfb39c360283b380a2aa60f79399be999577 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 14 May 2023 22:48:46 -0700 Subject: [PATCH] command: Make command names available for translation. 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 | 11 +- src/language/command.def | 284 +++++++++++++++++------------------ src/language/command.h | 2 +- src/language/lexer/segment.c | 2 +- 4 files changed, 150 insertions(+), 149 deletions(-) diff --git a/src/language/command.c b/src/language/command.c index 97e01fca5a..ab5391dc2e 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -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) diff --git a/src/language/command.def b/src/language/command.def index f5cb1611a1..f91669b88b 100644 --- a/src/language/command.def +++ b/src/language/command.def @@ -15,164 +15,164 @@ along with this program. If not, see . */ /* 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") diff --git a/src/language/command.h b/src/language/command.h index ecd2a75265..71b6a38e3c 100644 --- a/src/language/command.h +++ b/src/language/command.h @@ -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 diff --git a/src/language/lexer/segment.c b/src/language/lexer/segment.c index 346910898c..a7bce8b6e7 100644 --- a/src/language/lexer/segment.c +++ b/src/language/lexer/segment.c @@ -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[] = { -- 2.30.2