Browse Source

HUE-760 [beeswax] Templates internationalization

Created message bundles for all the templates
Enrico Berti 13 years ago
parent
commit
bdb090ba1b
27 changed files with 2842 additions and 395 deletions
  1. 2 0
      apps/beeswax/babel.cfg
  2. 1214 0
      apps/beeswax/src/beeswax/locale/django.pot
  3. 1214 0
      apps/beeswax/src/beeswax/locale/en_US/LC_MESSAGES/django.po
  4. 6 5
      apps/beeswax/src/beeswax/templates/beeswax_components.mako
  5. 17 16
      apps/beeswax/src/beeswax/templates/choose_delimiter.mako
  6. 18 17
      apps/beeswax/src/beeswax/templates/choose_file.mako
  7. 8 7
      apps/beeswax/src/beeswax/templates/configuration.mako
  8. 5 4
      apps/beeswax/src/beeswax/templates/create_table_index.mako
  9. 92 100
      apps/beeswax/src/beeswax/templates/create_table_manually.mako
  10. 14 13
      apps/beeswax/src/beeswax/templates/define_columns.mako
  11. 5 4
      apps/beeswax/src/beeswax/templates/describe_partitions.mako
  12. 25 24
      apps/beeswax/src/beeswax/templates/describe_table.mako
  13. 33 32
      apps/beeswax/src/beeswax/templates/execute.mako
  14. 5 4
      apps/beeswax/src/beeswax/templates/explain.mako
  15. 23 22
      apps/beeswax/src/beeswax/templates/index.mako
  16. 8 6
      apps/beeswax/src/beeswax/templates/layout.mako
  17. 19 18
      apps/beeswax/src/beeswax/templates/list_designs.mako
  18. 20 19
      apps/beeswax/src/beeswax/templates/list_history.mako
  19. 5 5
      apps/beeswax/src/beeswax/templates/load_table.mako
  20. 31 30
      apps/beeswax/src/beeswax/templates/my_queries.mako
  21. 6 5
      apps/beeswax/src/beeswax/templates/parameterization.mako
  22. 11 10
      apps/beeswax/src/beeswax/templates/report_gen.mako
  23. 8 7
      apps/beeswax/src/beeswax/templates/save_results.mako
  24. 13 12
      apps/beeswax/src/beeswax/templates/show_tables.mako
  25. 7 4
      apps/beeswax/src/beeswax/templates/util.mako
  26. 26 25
      apps/beeswax/src/beeswax/templates/watch_results.mako
  27. 7 6
      apps/beeswax/src/beeswax/templates/watch_wait.mako

+ 2 - 0
apps/beeswax/babel.cfg

@@ -0,0 +1,2 @@
+[python: src/beeswax/**.py]
+[mako: src/beeswax/templates/**.mako]

+ 1214 - 0
apps/beeswax/src/beeswax/locale/django.pot

@@ -0,0 +1,1214 @@
+# Translations template for PROJECT.
+# Copyright (C) 2012 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2012-07-03 01:12+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/beeswax/templates/beeswax_components.mako:198
+msgid "Beginning of List"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:199
+msgid "Previous Page"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:200
+msgid "Next Page"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:201
+msgid "End of List"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:203
+#, python-format
+msgid ""
+"Showing %(start)s to %(end)s of %(count)s items, page %(page)s of "
+"%(pages)s"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:23
+#: src/beeswax/templates/choose_file.mako:22
+#: src/beeswax/templates/define_columns.mako:23
+#: src/beeswax/templates/save_results.mako:23
+msgid "Beeswax: Create table from file"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:27
+#: src/beeswax/templates/choose_delimiter.mako:33
+#: src/beeswax/templates/choose_file.mako:27
+#: src/beeswax/templates/choose_file.mako:33
+#: src/beeswax/templates/create_table_manually.mako:32
+#: src/beeswax/templates/define_columns.mako:27
+#: src/beeswax/templates/define_columns.mako:33
+#: src/beeswax/templates/show_tables.mako:34
+msgid "Create a new table from file"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:32
+#: src/beeswax/templates/choose_file.mako:32
+#: src/beeswax/templates/create_table_manually.mako:31
+#: src/beeswax/templates/define_columns.mako:32
+#: src/beeswax/templates/describe_table.mako:59
+#: src/beeswax/templates/list_history.mako:57
+#: src/beeswax/templates/show_tables.mako:30
+msgid "Actions"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:34
+#: src/beeswax/templates/choose_file.mako:34
+#: src/beeswax/templates/create_table_manually.mako:26
+#: src/beeswax/templates/create_table_manually.mako:33
+#: src/beeswax/templates/define_columns.mako:34
+#: src/beeswax/templates/show_tables.mako:35
+msgid "Create a new table manually"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:40
+#: src/beeswax/templates/choose_file.mako:40
+#: src/beeswax/templates/define_columns.mako:40
+msgid "Step 1: Choose File"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:41
+#: src/beeswax/templates/choose_file.mako:41
+#: src/beeswax/templates/define_columns.mako:41
+msgid "Step 2: Choose Delimiter"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:42
+#: src/beeswax/templates/choose_file.mako:42
+#: src/beeswax/templates/define_columns.mako:42
+msgid "Step 3: Define Columns"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:50
+msgid "Choose A Delimiter"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:52
+msgid "Beeswax has determined that this file is delimited by"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:59
+msgid "Preview"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:61
+#: src/beeswax/templates/create_table_manually.mako:124
+msgid ""
+"Enter the column delimiter.  Must be a single character.  Use syntax like"
+" \"\" or \"\t\" for special characters."
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:66
+msgid "Table preview"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:93
+#: src/beeswax/templates/define_columns.mako:92
+msgid "Previous"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:94
+#: src/beeswax/templates/choose_file.mako:103
+#: src/beeswax/templates/create_table_manually.mako:291
+msgid "Next"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:112
+msgid "Please write here your delimiter"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:46
+msgid "Name Your Table and Choose A File"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:56
+msgid ""
+"Name of the new table. Table names must be globally unique. Table names "
+"tend to correspond as well to the directory where the data will be "
+"stored."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:64
+#: src/beeswax/templates/create_table_manually.mako:66
+msgid "Optional"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:70
+#: src/beeswax/templates/create_table_manually.mako:70
+msgid ""
+"Use a table comment to describe your table.  For example, you might "
+"mention the data's provenance, and any caveats users of this table should"
+" expect."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:85
+msgid ""
+"The HDFS path to the file that you would like to base this new table "
+"definition on. It can be compressed (gzip) or not."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:94
+msgid ""
+"Check this box if you want to import the data in this file after creating"
+" the table definition. Leave it unchecked if you just want to define an "
+"empty table."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:96
+msgid "Warning!"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:96
+msgid "The selected file is going to be moved during the import."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:114
+#: src/beeswax/templates/create_table_manually.mako:376
+#: src/beeswax/templates/execute.mako:263
+msgid "Choose a file"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:22
+#: src/beeswax/templates/configuration.mako:25
+msgid "Hive Configuration Variables"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:28
+#: src/beeswax/templates/my_queries.mako:41
+msgid "Filter:"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:28
+msgid "Search for key, value, etc..."
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:29
+msgid "Clear"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:35
+msgid "Key"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:36
+msgid "Value"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:37
+#: src/beeswax/templates/list_designs.mako:32
+msgid "Description"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:21
+msgid "Beeswax: Create Table"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:28
+msgid "How Do You Want to Create Your Table?"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:30
+msgid "Create From File"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:31
+msgid "Create Manually"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:22
+msgid "Beeswax: Create table manually"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:39
+msgid "Step 1: Name"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:40
+msgid "Step 2: Record Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:41
+msgid "Step 3: Serialization"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:42
+msgid "Step 4: File Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:43
+msgid "Step 5: Location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:44
+msgid "Step 6: Columns"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:49
+msgid "Create a table"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:49
+msgid "Let's start with a name and description for where we'll store your data."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:58
+msgid ""
+"Name of the new table.  Table names must be globally unique.  Table names"
+" tend to correspond as well to the directory where the data will be "
+"stored."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:78
+msgid "Choose Your Record Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:79
+msgid ""
+"Individual records are broken up into columns either with delimiters "
+"(e.g., CSV or TSV) or using a specific serialization / deserialization "
+"(SerDe) implementation. (One common specialized SerDe is for parsing out "
+"columns with a regular expression.)"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:85
+msgid "Record format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:93
+msgid "Delimited"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:95
+msgid "(Data files use delimiters, like commas (CSV) or tabs.)"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:104
+msgid "SerDe"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:106
+msgid "(Enter a specialized serialization implementation.)"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:116
+#: src/beeswax/templates/create_table_manually.mako:148
+msgid "Configure Record Serialization"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:117
+msgid "Hive only supports single-character delimiters."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:133
+msgid "Use for array types."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:142
+msgid "Use for map types."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:158
+msgid "Enter the Java Classname of your SerDe."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:158
+#: src/beeswax/templates/create_table_manually.mako:170
+#: src/beeswax/templates/create_table_manually.mako:276
+msgid "e.g."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:170
+msgid "Properties to pass to the (de)serialization mechanism."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:179
+msgid "Choose a File Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:180
+#: src/beeswax/templates/create_table_manually.mako:181
+#: src/beeswax/templates/create_table_manually.mako:182
+msgid "Use"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:180
+msgid "for newline-delimited text files."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:181
+msgid "for Hadoop's binary serialization format."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:182
+msgid "to choose a custom implementation."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:187
+msgid "File format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:205
+msgid "Java Class used to read data"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:217
+msgid "Java Class used to write data"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:226
+msgid "Choose Where Your Table's Data is Stored"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:230
+msgid "Location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:236
+msgid "Use default location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:239
+msgid ""
+"Store your table in the default location (controlled by Hive, and "
+"typically"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:251
+msgid "Choose File"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:253
+msgid "Enter the path (on HDFS) to your table's data location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:261
+msgid "Configure Table Columns"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:269
+msgid "Add a column"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:273
+msgid "Configure Partitions"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:274
+msgid ""
+"If your data is naturally partitioned (by, say, date), partitions are a "
+"way to tell Hive that data for a specific partition value are stored "
+"together."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:275
+msgid "Hive establishes a mapping between directories on disk"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:277
+msgid ""
+"and the data for that day.  Partitions are virtual columns; they are not "
+"represented in the data themselves, but are determined by the data "
+"location. Hive implements query optimizations such that queries that are "
+"specific to a single partition need not read the data in other "
+"partitions."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:285
+msgid "Add a partition"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:290
+msgid "Back"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:292
+msgid "Create table"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:307
+msgid "Delete this column"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:312
+#: src/beeswax/templates/define_columns.mako:67
+msgid "Column name"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:314
+msgid "Column Name"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:316
+msgid "Column name must be single words that start with a letter or a digit."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:321
+msgid "Column type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:327
+msgid ""
+"Type for this column. Certain advanced types (namely, structs) are not "
+"exposed in this interface."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:334
+msgid "Array value type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:338
+msgid "Type of the array values."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:345
+msgid "Map Key type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:349
+msgid "Type of the map keys."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:354
+msgid "Map Value type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:358
+msgid "Type of the map values."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:450
+msgid "Write here your field terminator"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:459
+msgid "Write here your collection terminator"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:468
+msgid "Write here your map key terminator"
+msgstr ""
+
+#: src/beeswax/templates/define_columns.mako:55
+msgid "Define your columns"
+msgstr ""
+
+#: src/beeswax/templates/define_columns.mako:80
+msgid "Row"
+msgstr ""
+
+#: src/beeswax/templates/define_columns.mako:93
+#: src/beeswax/templates/index.mako:35
+msgid "Create Table"
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:23
+#, python-format
+msgid "Beeswax Table Partitions: %(tableName)s"
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:27
+msgid "Partitions"
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:34
+msgid "Extra column for command links."
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:53
+msgid "Table has no partitions."
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:24
+#: src/beeswax/templates/my_queries.mako:158
+msgid "View"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:26
+msgid "Table"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:28
+#, python-format
+msgid "Beeswax %s Metadata: %s"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:35
+#: src/beeswax/templates/execute.mako:280
+#: src/beeswax/templates/list_designs.mako:31
+#: src/beeswax/templates/list_history.mako:96
+#: src/beeswax/templates/my_queries.mako:56
+#: src/beeswax/templates/my_queries.mako:123
+msgid "Name"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:36
+#: src/beeswax/templates/list_designs.mako:34
+#: src/beeswax/templates/my_queries.mako:58
+msgid "Type"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:37
+msgid "Comment"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:54
+msgid "Beeswax Table Metadata:"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:60
+#: src/beeswax/templates/index.mako:50
+msgid "Import Data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:61
+#: src/beeswax/templates/show_tables.mako:53
+msgid "Browse Data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:62
+msgid "Drop"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:63
+msgid "View File Location"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:73
+msgid "Columns"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:75
+msgid "Partition Columns"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:78
+msgid "Sample"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:89
+msgid "Show Partitions"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:126
+msgid "Drop Table"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:134
+#: src/beeswax/templates/index.mako:65
+#: src/beeswax/templates/list_designs.mako:113
+#: src/beeswax/templates/my_queries.mako:181
+#: src/beeswax/templates/show_tables.mako:76
+msgid "Yes"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:135
+#: src/beeswax/templates/index.mako:66
+#: src/beeswax/templates/list_designs.mako:114
+#: src/beeswax/templates/my_queries.mako:182
+#: src/beeswax/templates/show_tables.mako:77
+msgid "No"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:146
+msgid "Import data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:150
+#: src/beeswax/templates/load_table.mako:42
+msgid ""
+"Note that loading data will move data from its location into the table's "
+"storage location."
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:179
+msgid "Overwrite existing data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:188
+#: src/beeswax/templates/report_gen.mako:106
+msgid "Submit"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:189
+#: src/beeswax/templates/parameterization.mako:49
+#: src/beeswax/templates/save_results.mako:44
+#: src/beeswax/templates/watch_results.mako:157
+msgid "Cancel"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:27 src/beeswax/templates/execute.mako:63
+msgid "Hive Query"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:36 src/beeswax/templates/execute.mako:224
+#: src/beeswax/templates/explain.mako:31
+#: src/beeswax/templates/list_designs.mako:69
+#: src/beeswax/templates/list_history.mako:97
+#: src/beeswax/templates/my_queries.mako:85
+#: src/beeswax/templates/my_queries.mako:124
+#: src/beeswax/templates/watch_results.mako:66
+#: src/beeswax/templates/watch_wait.mako:53
+msgid "Query"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:41
+msgid "Example: SELECT * FROM tablename"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:52
+msgid "Execute"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:54 src/beeswax/templates/execute.mako:289
+#: src/beeswax/templates/save_results.mako:43
+#: src/beeswax/templates/watch_results.mako:38
+#: src/beeswax/templates/watch_results.mako:156
+msgid "Save"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:56
+msgid "Save as..."
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:57
+msgid "Explain"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:58
+msgid "or create a"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:58
+msgid "New query"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:72
+msgid "Hive settings"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:79 src/beeswax/templates/execute.mako:114
+#: src/beeswax/templates/execute.mako:149
+msgid "Delete this setting"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:104
+#: src/beeswax/templates/execute.mako:139
+#: src/beeswax/templates/execute.mako:174
+msgid "Add"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:107
+msgid "File Resources"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:142
+msgid "User-defined Functions"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:177
+msgid "Parametrization"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:182
+msgid "Enable Parameterization"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:183
+msgid ""
+"If checked (the default), you can include parameters like $parameter_name"
+" in your query, and users will be prompted for a value when the query is "
+"run."
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:189
+msgid "Email Notification"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:194
+msgid "Email me on complete"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:195
+msgid ""
+"If checked, you will receive an email notification when the query "
+"completes."
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:209
+msgid "Your query has the following error(s):"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:212
+msgid "click the"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:212
+#: src/beeswax/templates/execute.mako:230
+msgid "Error Log"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:212
+msgid "tab below for details"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:276
+msgid "Choose a name"
+msgstr ""
+
+#: src/beeswax/templates/explain.mako:23
+msgid "Query Explanation"
+msgstr ""
+
+#: src/beeswax/templates/explain.mako:27
+msgid "Query Explanation:"
+msgstr ""
+
+#: src/beeswax/templates/explain.mako:30
+msgid "Explanation"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:22
+msgid "Beeswax"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:30
+msgid "Examples"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:31 src/beeswax/templates/index.mako:51
+msgid "Install Samples"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:33 src/beeswax/templates/layout.mako:38
+msgid "Tables"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:34
+msgid "Show Tables"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:36
+msgid "Queries"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:37 src/beeswax/templates/layout.mako:36
+msgid "Saved Queries"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:38
+msgid "Execute Query"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:39 src/beeswax/templates/report_gen.mako:25
+msgid "Report Generator"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:40
+msgid "Query History"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:41
+msgid "Configuration"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:42
+msgid "Hive Configuration"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:43
+msgid "Extended Configuration"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:48
+msgid "Welcome to Beeswax for Hive"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:49
+msgid "To get started with Beeswax you'll first need set up some data:"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:59
+#: src/beeswax/templates/show_tables.mako:32
+#: src/beeswax/templates/show_tables.mako:68
+msgid "Install samples"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:86
+#: src/beeswax/templates/show_tables.mako:111
+msgid "There was an error processing your request:"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:34
+msgid "Query Editor"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:35
+msgid "My Queries"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:37
+msgid "History"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:39
+msgid "Settings"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:24
+#: src/beeswax/templates/list_designs.mako:27
+msgid "Beeswax: Queries"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:33
+msgid "Owner"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:35
+#: src/beeswax/templates/my_queries.mako:59
+msgid "Last Modified"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:67
+#: src/beeswax/templates/my_queries.mako:83
+msgid "Report"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:73
+#: src/beeswax/templates/my_queries.mako:89
+msgid "ago"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:85
+#: src/beeswax/templates/my_queries.mako:99
+msgid "Edit this report."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:85
+#: src/beeswax/templates/list_designs.mako:87
+#: src/beeswax/templates/my_queries.mako:99
+#: src/beeswax/templates/my_queries.mako:101
+msgid "Edit"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:87
+#: src/beeswax/templates/my_queries.mako:101
+msgid "Edit this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:89
+#: src/beeswax/templates/my_queries.mako:103
+msgid "Delete this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:89
+#: src/beeswax/templates/my_queries.mako:103
+msgid "Delete"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:90
+#: src/beeswax/templates/my_queries.mako:104
+msgid "View the usage history of this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:90
+#: src/beeswax/templates/my_queries.mako:104
+msgid "Usage History"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:93
+#: src/beeswax/templates/list_history.mako:44
+#: src/beeswax/templates/my_queries.mako:105
+msgid "Copy this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:93
+#: src/beeswax/templates/list_history.mako:44
+#: src/beeswax/templates/my_queries.mako:105
+msgid "Clone"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:110
+#: src/beeswax/templates/my_queries.mako:178
+msgid "Confirm action"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:24
+#: src/beeswax/templates/list_history.mako:52
+msgid "Beeswax: Query History"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:36
+msgid "Unsaved"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:47
+msgid "Auto generated action"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:64
+msgid "Show my queries"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:70
+msgid "Show everyone's queries"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:79
+msgid "Show user queries"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:85
+msgid "Show auto actions"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:95
+#: src/beeswax/templates/my_queries.mako:122
+msgid "Time"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:98
+msgid "User"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:99
+#: src/beeswax/templates/my_queries.mako:125
+msgid "State"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:100
+#: src/beeswax/templates/my_queries.mako:126
+msgid "Result"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:132
+#: src/beeswax/templates/watch_results.mako:63
+msgid "Results"
+msgstr ""
+
+#: src/beeswax/templates/load_table.mako:22
+#, python-format
+msgid "Beeswax: Load Data into %(table)s"
+msgstr ""
+
+#: src/beeswax/templates/load_table.mako:25
+#, python-format
+msgid "Load Data into %(table)s"
+msgstr ""
+
+#: src/beeswax/templates/load_table.mako:30
+msgid "Open File Chooser"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:25
+#: src/beeswax/templates/my_queries.mako:33
+msgid "Beeswax: My Queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:37
+msgid "Create New Query"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:41
+msgid "Search for name, description, etc..."
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:46
+msgid "Recent Saved Queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:47
+msgid "Recent Run Queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:57
+msgid "Desc"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:94
+msgid "Options"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:114
+msgid "View all my queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:168
+msgid "View my entire query history"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:23
+msgid "Parametrize Hive Query"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:31
+msgid "Explain query"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:34
+msgid "Execute query"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:38
+msgid "Please specify parameters for this query:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:22
+msgid "Beeswax: Query Constructor"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:27
+msgid "Working on saved query:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:31
+msgid "Error:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:35
+msgid "View logs"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:41
+msgid "Add column:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:63
+msgid "Conditions"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:107
+msgid "Advanced ..."
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:116
+msgid "Server Log"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:29
+#: src/beeswax/templates/watch_results.mako:132
+msgid "Save Query Results"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:33
+#: src/beeswax/templates/watch_results.mako:137
+msgid "In a new table"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:39
+#: src/beeswax/templates/watch_results.mako:143
+msgid "In an HDFS directory"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:41
+#: src/beeswax/templates/watch_results.mako:145
+msgid "Results location"
+msgstr ""
+
+#: src/beeswax/templates/show_tables.mako:21
+#: src/beeswax/templates/show_tables.mako:25
+msgid "Beeswax: Table List"
+msgstr ""
+
+#: src/beeswax/templates/show_tables.mako:43
+#: src/beeswax/templates/watch_results.mako:139
+msgid "Table Name"
+msgstr ""
+
+#: src/beeswax/templates/util.mako:66
+msgid "Unsaved Query"
+msgstr ""
+
+#: src/beeswax/templates/util.mako:71
+msgid "Query Results"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:23
+msgid "Beeswax: Query Results"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:27
+msgid "Beeswax: Query Results:"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:33
+msgid "Downloads"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:34
+msgid "Download as CSV"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:35
+msgid "Download as XLS"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:42
+#: src/beeswax/templates/watch_wait.mako:35
+msgid "MR Job"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:42
+#: src/beeswax/templates/watch_wait.mako:35
+msgid "MR Jobs"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:52
+#: src/beeswax/templates/watch_wait.mako:45
+msgid "No Hadoop jobs were launched in running this query."
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:61
+msgid "Error"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:67
+#: src/beeswax/templates/watch_wait.mako:52
+msgid "Log"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:74
+msgid "Error!"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:79
+msgid "Warning:"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:79
+msgid "Page offset may have incremented since last view."
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:104
+#: src/beeswax/templates/watch_results.mako:106
+msgid "Back to first row"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:109
+msgid "Next page"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:154
+msgid "Sorry, name is required."
+msgstr ""
+
+#: src/beeswax/templates/watch_wait.mako:22
+#: src/beeswax/templates/watch_wait.mako:28
+msgid "Beeswax: Waiting for query..."
+msgstr ""
+

+ 1214 - 0
apps/beeswax/src/beeswax/locale/en_US/LC_MESSAGES/django.po

@@ -0,0 +1,1214 @@
+# English (United States) translations for PROJECT.
+# Copyright (C) 2012 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2012-07-03 01:12+0200\n"
+"PO-Revision-Date: 2012-07-03 01:11+0200\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: en_US <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: src/beeswax/templates/beeswax_components.mako:198
+msgid "Beginning of List"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:199
+msgid "Previous Page"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:200
+msgid "Next Page"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:201
+msgid "End of List"
+msgstr ""
+
+#: src/beeswax/templates/beeswax_components.mako:203
+#, python-format
+msgid ""
+"Showing %(start)s to %(end)s of %(count)s items, page %(page)s of "
+"%(pages)s"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:23
+#: src/beeswax/templates/choose_file.mako:22
+#: src/beeswax/templates/define_columns.mako:23
+#: src/beeswax/templates/save_results.mako:23
+msgid "Beeswax: Create table from file"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:27
+#: src/beeswax/templates/choose_delimiter.mako:33
+#: src/beeswax/templates/choose_file.mako:27
+#: src/beeswax/templates/choose_file.mako:33
+#: src/beeswax/templates/create_table_manually.mako:32
+#: src/beeswax/templates/define_columns.mako:27
+#: src/beeswax/templates/define_columns.mako:33
+#: src/beeswax/templates/show_tables.mako:34
+msgid "Create a new table from file"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:32
+#: src/beeswax/templates/choose_file.mako:32
+#: src/beeswax/templates/create_table_manually.mako:31
+#: src/beeswax/templates/define_columns.mako:32
+#: src/beeswax/templates/describe_table.mako:59
+#: src/beeswax/templates/list_history.mako:57
+#: src/beeswax/templates/show_tables.mako:30
+msgid "Actions"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:34
+#: src/beeswax/templates/choose_file.mako:34
+#: src/beeswax/templates/create_table_manually.mako:26
+#: src/beeswax/templates/create_table_manually.mako:33
+#: src/beeswax/templates/define_columns.mako:34
+#: src/beeswax/templates/show_tables.mako:35
+msgid "Create a new table manually"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:40
+#: src/beeswax/templates/choose_file.mako:40
+#: src/beeswax/templates/define_columns.mako:40
+msgid "Step 1: Choose File"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:41
+#: src/beeswax/templates/choose_file.mako:41
+#: src/beeswax/templates/define_columns.mako:41
+msgid "Step 2: Choose Delimiter"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:42
+#: src/beeswax/templates/choose_file.mako:42
+#: src/beeswax/templates/define_columns.mako:42
+msgid "Step 3: Define Columns"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:50
+msgid "Choose A Delimiter"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:52
+msgid "Beeswax has determined that this file is delimited by"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:59
+msgid "Preview"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:61
+#: src/beeswax/templates/create_table_manually.mako:124
+msgid ""
+"Enter the column delimiter.  Must be a single character.  Use syntax like"
+" \"\" or \"\t\" for special characters."
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:66
+msgid "Table preview"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:93
+#: src/beeswax/templates/define_columns.mako:92
+msgid "Previous"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:94
+#: src/beeswax/templates/choose_file.mako:103
+#: src/beeswax/templates/create_table_manually.mako:291
+msgid "Next"
+msgstr ""
+
+#: src/beeswax/templates/choose_delimiter.mako:112
+msgid "Please write here your delimiter"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:46
+msgid "Name Your Table and Choose A File"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:56
+msgid ""
+"Name of the new table. Table names must be globally unique. Table names "
+"tend to correspond as well to the directory where the data will be "
+"stored."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:64
+#: src/beeswax/templates/create_table_manually.mako:66
+msgid "Optional"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:70
+#: src/beeswax/templates/create_table_manually.mako:70
+msgid ""
+"Use a table comment to describe your table.  For example, you might "
+"mention the data's provenance, and any caveats users of this table should"
+" expect."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:85
+msgid ""
+"The HDFS path to the file that you would like to base this new table "
+"definition on. It can be compressed (gzip) or not."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:94
+msgid ""
+"Check this box if you want to import the data in this file after creating"
+" the table definition. Leave it unchecked if you just want to define an "
+"empty table."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:96
+msgid "Warning!"
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:96
+msgid "The selected file is going to be moved during the import."
+msgstr ""
+
+#: src/beeswax/templates/choose_file.mako:114
+#: src/beeswax/templates/create_table_manually.mako:376
+#: src/beeswax/templates/execute.mako:263
+msgid "Choose a file"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:22
+#: src/beeswax/templates/configuration.mako:25
+msgid "Hive Configuration Variables"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:28
+#: src/beeswax/templates/my_queries.mako:41
+msgid "Filter:"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:28
+msgid "Search for key, value, etc..."
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:29
+msgid "Clear"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:35
+msgid "Key"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:36
+msgid "Value"
+msgstr ""
+
+#: src/beeswax/templates/configuration.mako:37
+#: src/beeswax/templates/list_designs.mako:32
+msgid "Description"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:21
+msgid "Beeswax: Create Table"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:28
+msgid "How Do You Want to Create Your Table?"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:30
+msgid "Create From File"
+msgstr ""
+
+#: src/beeswax/templates/create_table_index.mako:31
+msgid "Create Manually"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:22
+msgid "Beeswax: Create table manually"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:39
+msgid "Step 1: Name"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:40
+msgid "Step 2: Record Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:41
+msgid "Step 3: Serialization"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:42
+msgid "Step 4: File Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:43
+msgid "Step 5: Location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:44
+msgid "Step 6: Columns"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:49
+msgid "Create a table"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:49
+msgid "Let's start with a name and description for where we'll store your data."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:58
+msgid ""
+"Name of the new table.  Table names must be globally unique.  Table names"
+" tend to correspond as well to the directory where the data will be "
+"stored."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:78
+msgid "Choose Your Record Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:79
+msgid ""
+"Individual records are broken up into columns either with delimiters "
+"(e.g., CSV or TSV) or using a specific serialization / deserialization "
+"(SerDe) implementation. (One common specialized SerDe is for parsing out "
+"columns with a regular expression.)"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:85
+msgid "Record format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:93
+msgid "Delimited"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:95
+msgid "(Data files use delimiters, like commas (CSV) or tabs.)"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:104
+msgid "SerDe"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:106
+msgid "(Enter a specialized serialization implementation.)"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:116
+#: src/beeswax/templates/create_table_manually.mako:148
+msgid "Configure Record Serialization"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:117
+msgid "Hive only supports single-character delimiters."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:133
+msgid "Use for array types."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:142
+msgid "Use for map types."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:158
+msgid "Enter the Java Classname of your SerDe."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:158
+#: src/beeswax/templates/create_table_manually.mako:170
+#: src/beeswax/templates/create_table_manually.mako:276
+msgid "e.g."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:170
+msgid "Properties to pass to the (de)serialization mechanism."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:179
+msgid "Choose a File Format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:180
+#: src/beeswax/templates/create_table_manually.mako:181
+#: src/beeswax/templates/create_table_manually.mako:182
+msgid "Use"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:180
+msgid "for newline-delimited text files."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:181
+msgid "for Hadoop's binary serialization format."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:182
+msgid "to choose a custom implementation."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:187
+msgid "File format"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:205
+msgid "Java Class used to read data"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:217
+msgid "Java Class used to write data"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:226
+msgid "Choose Where Your Table's Data is Stored"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:230
+msgid "Location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:236
+msgid "Use default location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:239
+msgid ""
+"Store your table in the default location (controlled by Hive, and "
+"typically"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:251
+msgid "Choose File"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:253
+msgid "Enter the path (on HDFS) to your table's data location"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:261
+msgid "Configure Table Columns"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:269
+msgid "Add a column"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:273
+msgid "Configure Partitions"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:274
+msgid ""
+"If your data is naturally partitioned (by, say, date), partitions are a "
+"way to tell Hive that data for a specific partition value are stored "
+"together."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:275
+msgid "Hive establishes a mapping between directories on disk"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:277
+msgid ""
+"and the data for that day.  Partitions are virtual columns; they are not "
+"represented in the data themselves, but are determined by the data "
+"location. Hive implements query optimizations such that queries that are "
+"specific to a single partition need not read the data in other "
+"partitions."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:285
+msgid "Add a partition"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:290
+msgid "Back"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:292
+msgid "Create table"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:307
+msgid "Delete this column"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:312
+#: src/beeswax/templates/define_columns.mako:67
+msgid "Column name"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:314
+msgid "Column Name"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:316
+msgid "Column name must be single words that start with a letter or a digit."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:321
+msgid "Column type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:327
+msgid ""
+"Type for this column. Certain advanced types (namely, structs) are not "
+"exposed in this interface."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:334
+msgid "Array value type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:338
+msgid "Type of the array values."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:345
+msgid "Map Key type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:349
+msgid "Type of the map keys."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:354
+msgid "Map Value type"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:358
+msgid "Type of the map values."
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:450
+msgid "Write here your field terminator"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:459
+msgid "Write here your collection terminator"
+msgstr ""
+
+#: src/beeswax/templates/create_table_manually.mako:468
+msgid "Write here your map key terminator"
+msgstr ""
+
+#: src/beeswax/templates/define_columns.mako:55
+msgid "Define your columns"
+msgstr ""
+
+#: src/beeswax/templates/define_columns.mako:80
+msgid "Row"
+msgstr ""
+
+#: src/beeswax/templates/define_columns.mako:93
+#: src/beeswax/templates/index.mako:35
+msgid "Create Table"
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:23
+#, python-format
+msgid "Beeswax Table Partitions: %(tableName)s"
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:27
+msgid "Partitions"
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:34
+msgid "Extra column for command links."
+msgstr ""
+
+#: src/beeswax/templates/describe_partitions.mako:53
+msgid "Table has no partitions."
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:24
+#: src/beeswax/templates/my_queries.mako:158
+msgid "View"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:26
+msgid "Table"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:28
+#, python-format
+msgid "Beeswax %s Metadata: %s"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:35
+#: src/beeswax/templates/execute.mako:280
+#: src/beeswax/templates/list_designs.mako:31
+#: src/beeswax/templates/list_history.mako:96
+#: src/beeswax/templates/my_queries.mako:56
+#: src/beeswax/templates/my_queries.mako:123
+msgid "Name"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:36
+#: src/beeswax/templates/list_designs.mako:34
+#: src/beeswax/templates/my_queries.mako:58
+msgid "Type"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:37
+msgid "Comment"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:54
+msgid "Beeswax Table Metadata:"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:60
+#: src/beeswax/templates/index.mako:50
+msgid "Import Data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:61
+#: src/beeswax/templates/show_tables.mako:53
+msgid "Browse Data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:62
+msgid "Drop"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:63
+msgid "View File Location"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:73
+msgid "Columns"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:75
+msgid "Partition Columns"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:78
+msgid "Sample"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:89
+msgid "Show Partitions"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:126
+msgid "Drop Table"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:134
+#: src/beeswax/templates/index.mako:65
+#: src/beeswax/templates/list_designs.mako:113
+#: src/beeswax/templates/my_queries.mako:181
+#: src/beeswax/templates/show_tables.mako:76
+msgid "Yes"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:135
+#: src/beeswax/templates/index.mako:66
+#: src/beeswax/templates/list_designs.mako:114
+#: src/beeswax/templates/my_queries.mako:182
+#: src/beeswax/templates/show_tables.mako:77
+msgid "No"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:146
+msgid "Import data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:150
+#: src/beeswax/templates/load_table.mako:42
+msgid ""
+"Note that loading data will move data from its location into the table's "
+"storage location."
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:179
+msgid "Overwrite existing data"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:188
+#: src/beeswax/templates/report_gen.mako:106
+msgid "Submit"
+msgstr ""
+
+#: src/beeswax/templates/describe_table.mako:189
+#: src/beeswax/templates/parameterization.mako:49
+#: src/beeswax/templates/save_results.mako:44
+#: src/beeswax/templates/watch_results.mako:157
+msgid "Cancel"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:27 src/beeswax/templates/execute.mako:63
+msgid "Hive Query"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:36 src/beeswax/templates/execute.mako:224
+#: src/beeswax/templates/explain.mako:31
+#: src/beeswax/templates/list_designs.mako:69
+#: src/beeswax/templates/list_history.mako:97
+#: src/beeswax/templates/my_queries.mako:85
+#: src/beeswax/templates/my_queries.mako:124
+#: src/beeswax/templates/watch_results.mako:66
+#: src/beeswax/templates/watch_wait.mako:53
+msgid "Query"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:41
+msgid "Example: SELECT * FROM tablename"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:52
+msgid "Execute"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:54 src/beeswax/templates/execute.mako:289
+#: src/beeswax/templates/save_results.mako:43
+#: src/beeswax/templates/watch_results.mako:38
+#: src/beeswax/templates/watch_results.mako:156
+msgid "Save"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:56
+msgid "Save as..."
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:57
+msgid "Explain"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:58
+msgid "or create a"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:58
+msgid "New query"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:72
+msgid "Hive settings"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:79 src/beeswax/templates/execute.mako:114
+#: src/beeswax/templates/execute.mako:149
+msgid "Delete this setting"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:104
+#: src/beeswax/templates/execute.mako:139
+#: src/beeswax/templates/execute.mako:174
+msgid "Add"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:107
+msgid "File Resources"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:142
+msgid "User-defined Functions"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:177
+msgid "Parametrization"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:182
+msgid "Enable Parameterization"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:183
+msgid ""
+"If checked (the default), you can include parameters like $parameter_name"
+" in your query, and users will be prompted for a value when the query is "
+"run."
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:189
+msgid "Email Notification"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:194
+msgid "Email me on complete"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:195
+msgid ""
+"If checked, you will receive an email notification when the query "
+"completes."
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:209
+msgid "Your query has the following error(s):"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:212
+msgid "click the"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:212
+#: src/beeswax/templates/execute.mako:230
+msgid "Error Log"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:212
+msgid "tab below for details"
+msgstr ""
+
+#: src/beeswax/templates/execute.mako:276
+msgid "Choose a name"
+msgstr ""
+
+#: src/beeswax/templates/explain.mako:23
+msgid "Query Explanation"
+msgstr ""
+
+#: src/beeswax/templates/explain.mako:27
+msgid "Query Explanation:"
+msgstr ""
+
+#: src/beeswax/templates/explain.mako:30
+msgid "Explanation"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:22
+msgid "Beeswax"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:30
+msgid "Examples"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:31 src/beeswax/templates/index.mako:51
+msgid "Install Samples"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:33 src/beeswax/templates/layout.mako:38
+msgid "Tables"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:34
+msgid "Show Tables"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:36
+msgid "Queries"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:37 src/beeswax/templates/layout.mako:36
+msgid "Saved Queries"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:38
+msgid "Execute Query"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:39 src/beeswax/templates/report_gen.mako:25
+msgid "Report Generator"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:40
+msgid "Query History"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:41
+msgid "Configuration"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:42
+msgid "Hive Configuration"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:43
+msgid "Extended Configuration"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:48
+msgid "Welcome to Beeswax for Hive"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:49
+msgid "To get started with Beeswax you'll first need set up some data:"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:59
+#: src/beeswax/templates/show_tables.mako:32
+#: src/beeswax/templates/show_tables.mako:68
+msgid "Install samples"
+msgstr ""
+
+#: src/beeswax/templates/index.mako:86
+#: src/beeswax/templates/show_tables.mako:111
+msgid "There was an error processing your request:"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:34
+msgid "Query Editor"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:35
+msgid "My Queries"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:37
+msgid "History"
+msgstr ""
+
+#: src/beeswax/templates/layout.mako:39
+msgid "Settings"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:24
+#: src/beeswax/templates/list_designs.mako:27
+msgid "Beeswax: Queries"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:33
+msgid "Owner"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:35
+#: src/beeswax/templates/my_queries.mako:59
+msgid "Last Modified"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:67
+#: src/beeswax/templates/my_queries.mako:83
+msgid "Report"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:73
+#: src/beeswax/templates/my_queries.mako:89
+msgid "ago"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:85
+#: src/beeswax/templates/my_queries.mako:99
+msgid "Edit this report."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:85
+#: src/beeswax/templates/list_designs.mako:87
+#: src/beeswax/templates/my_queries.mako:99
+#: src/beeswax/templates/my_queries.mako:101
+msgid "Edit"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:87
+#: src/beeswax/templates/my_queries.mako:101
+msgid "Edit this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:89
+#: src/beeswax/templates/my_queries.mako:103
+msgid "Delete this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:89
+#: src/beeswax/templates/my_queries.mako:103
+msgid "Delete"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:90
+#: src/beeswax/templates/my_queries.mako:104
+msgid "View the usage history of this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:90
+#: src/beeswax/templates/my_queries.mako:104
+msgid "Usage History"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:93
+#: src/beeswax/templates/list_history.mako:44
+#: src/beeswax/templates/my_queries.mako:105
+msgid "Copy this query."
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:93
+#: src/beeswax/templates/list_history.mako:44
+#: src/beeswax/templates/my_queries.mako:105
+msgid "Clone"
+msgstr ""
+
+#: src/beeswax/templates/list_designs.mako:110
+#: src/beeswax/templates/my_queries.mako:178
+msgid "Confirm action"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:24
+#: src/beeswax/templates/list_history.mako:52
+msgid "Beeswax: Query History"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:36
+msgid "Unsaved"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:47
+msgid "Auto generated action"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:64
+msgid "Show my queries"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:70
+msgid "Show everyone's queries"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:79
+msgid "Show user queries"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:85
+msgid "Show auto actions"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:95
+#: src/beeswax/templates/my_queries.mako:122
+msgid "Time"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:98
+msgid "User"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:99
+#: src/beeswax/templates/my_queries.mako:125
+msgid "State"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:100
+#: src/beeswax/templates/my_queries.mako:126
+msgid "Result"
+msgstr ""
+
+#: src/beeswax/templates/list_history.mako:132
+#: src/beeswax/templates/watch_results.mako:63
+msgid "Results"
+msgstr ""
+
+#: src/beeswax/templates/load_table.mako:22
+#, python-format
+msgid "Beeswax: Load Data into %(table)s"
+msgstr ""
+
+#: src/beeswax/templates/load_table.mako:25
+#, python-format
+msgid "Load Data into %(table)s"
+msgstr ""
+
+#: src/beeswax/templates/load_table.mako:30
+msgid "Open File Chooser"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:25
+#: src/beeswax/templates/my_queries.mako:33
+msgid "Beeswax: My Queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:37
+msgid "Create New Query"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:41
+msgid "Search for name, description, etc..."
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:46
+msgid "Recent Saved Queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:47
+msgid "Recent Run Queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:57
+msgid "Desc"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:94
+msgid "Options"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:114
+msgid "View all my queries"
+msgstr ""
+
+#: src/beeswax/templates/my_queries.mako:168
+msgid "View my entire query history"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:23
+msgid "Parametrize Hive Query"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:31
+msgid "Explain query"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:34
+msgid "Execute query"
+msgstr ""
+
+#: src/beeswax/templates/parameterization.mako:38
+msgid "Please specify parameters for this query:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:22
+msgid "Beeswax: Query Constructor"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:27
+msgid "Working on saved query:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:31
+msgid "Error:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:35
+msgid "View logs"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:41
+msgid "Add column:"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:63
+msgid "Conditions"
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:107
+msgid "Advanced ..."
+msgstr ""
+
+#: src/beeswax/templates/report_gen.mako:116
+msgid "Server Log"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:29
+#: src/beeswax/templates/watch_results.mako:132
+msgid "Save Query Results"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:33
+#: src/beeswax/templates/watch_results.mako:137
+msgid "In a new table"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:39
+#: src/beeswax/templates/watch_results.mako:143
+msgid "In an HDFS directory"
+msgstr ""
+
+#: src/beeswax/templates/save_results.mako:41
+#: src/beeswax/templates/watch_results.mako:145
+msgid "Results location"
+msgstr ""
+
+#: src/beeswax/templates/show_tables.mako:21
+#: src/beeswax/templates/show_tables.mako:25
+msgid "Beeswax: Table List"
+msgstr ""
+
+#: src/beeswax/templates/show_tables.mako:43
+#: src/beeswax/templates/watch_results.mako:139
+msgid "Table Name"
+msgstr ""
+
+#: src/beeswax/templates/util.mako:66
+msgid "Unsaved Query"
+msgstr ""
+
+#: src/beeswax/templates/util.mako:71
+msgid "Query Results"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:23
+msgid "Beeswax: Query Results"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:27
+msgid "Beeswax: Query Results:"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:33
+msgid "Downloads"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:34
+msgid "Download as CSV"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:35
+msgid "Download as XLS"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:42
+#: src/beeswax/templates/watch_wait.mako:35
+msgid "MR Job"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:42
+#: src/beeswax/templates/watch_wait.mako:35
+msgid "MR Jobs"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:52
+#: src/beeswax/templates/watch_wait.mako:45
+msgid "No Hadoop jobs were launched in running this query."
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:61
+msgid "Error"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:67
+#: src/beeswax/templates/watch_wait.mako:52
+msgid "Log"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:74
+msgid "Error!"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:79
+msgid "Warning:"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:79
+msgid "Page offset may have incremented since last view."
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:104
+#: src/beeswax/templates/watch_results.mako:106
+msgid "Back to first row"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:109
+msgid "Next page"
+msgstr ""
+
+#: src/beeswax/templates/watch_results.mako:154
+msgid "Sorry, name is required."
+msgstr ""
+
+#: src/beeswax/templates/watch_wait.mako:22
+#: src/beeswax/templates/watch_wait.mako:28
+msgid "Beeswax: Waiting for query..."
+msgstr ""
+

+ 6 - 5
apps/beeswax/src/beeswax/templates/beeswax_components.mako

@@ -15,6 +15,7 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
   from desktop.lib.django_util import extract_field_data
   from desktop.lib.django_util import extract_field_data
+  from django.utils.translation import ugettext as _
 %>
 %>
 <%def name="fieldName(field)">
 <%def name="fieldName(field)">
 
 
@@ -194,11 +195,11 @@ ${field.label_tag() | n}
 <%def name="pagination(page)">
 <%def name="pagination(page)">
     <div class="pagination">
     <div class="pagination">
         <ul class="pull-right">
         <ul class="pull-right">
-            <li class="prev"><a title="Beginning of List" ${toppage(page)} class="bw-firstBlock">&larr; Beginning of List</a></li>
-            <li><a title="Previous Page" ${prevpage(page)} class="bw-prevBlock">Previous Page</a></li>
-            <li><a title="Next page" ${nextpage(page)} class="bw-nextBlock">Next Page</a></li>
-            <li class="next"><a title="End of List" ${bottompage(page)} class="bw-lastBlock">End of List &rarr;</a></li>
+            <li class="prev"><a title="Beginning of List" ${toppage(page)} class="bw-firstBlock">&larr; ${_('Beginning of List')}</a></li>
+            <li><a title="Previous Page" ${prevpage(page)} class="bw-prevBlock">${_('Previous Page')}</a></li>
+            <li><a title="Next page" ${nextpage(page)} class="bw-nextBlock">${_('Next Page')}</a></li>
+            <li class="next"><a title="End of List" ${bottompage(page)} class="bw-lastBlock">${_('End of List')} &rarr;</a></li>
         </ul>
         </ul>
-        <p>Showing ${page.start_index()} to ${page.end_index()} of ${page.total_count()} items, page ${page.number} of ${page.num_pages()}</p>
+        <p>${_('Showing %(start)s to %(end)s of %(count)s items, page %(page)s of %(pages)s') % dict(start=page.start_index(),end=page.end_index(),count=page.total_count(),page=page.number,pages=page.num_pages())}</p>
     </div>
     </div>
 </%def>
 </%def>

+ 17 - 16
apps/beeswax/src/beeswax/templates/choose_delimiter.mako

@@ -15,30 +15,31 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Create table from file", "beeswax", "100px")}
+${commonheader(_('Beeswax: Create table from file'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-    <h1>Create a new table from file</h1>
+    <h1>${_('Create a new table from file')}</h1>
     <div class="row-fluid">
     <div class="row-fluid">
         <div class="span3">
         <div class="span3">
             <div class="well sidebar-nav">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                 <ul class="nav nav-list">
-                    <li class="nav-header">Actions</li>
-                    <li><a href="${ url('beeswax.create_table.import_wizard')}">Create a new table from file</a></li>
-                    <li><a href="${ url('beeswax.create_table.create_table')}">Create a new table manually</a></li>
+                    <li class="nav-header">${_('Actions')}</li>
+                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
                 </ul>
                 </ul>
             </div>
             </div>
         </div>
         </div>
         <div class="span9">
         <div class="span9">
             <ul class="nav nav-pills">
             <ul class="nav nav-pills">
-                <li><a id="step1" href="#">Step 1: Choose File</a></li>
-                <li class="active"><a href="#">Step 2: Choose Delimiter</a></li>
-                <li><a id="step3" href="#">Step 3: Define Columns</a></li>
+                <li><a id="step1" href="#">${_('Step 1: Choose File')}</a></li>
+                <li class="active"><a href="#">${_('Step 2: Choose Delimiter')}</a></li>
+                <li><a id="step3" href="#">${_('Step 3: Define Columns')}</a></li>
             </ul>
             </ul>
             <form id="delimiterForm" action="${action}" method="POST" class="form-horizontal">
             <form id="delimiterForm" action="${action}" method="POST" class="form-horizontal">
                 <div class="hide">
                 <div class="hide">
@@ -46,23 +47,23 @@ ${layout.menubar(section='tables')}
                     ${comps.field(delim_form['file_type'])}
                     ${comps.field(delim_form['file_type'])}
                 </div>
                 </div>
                 <fieldset>
                 <fieldset>
-                    <div class="alert alert-info"><h3>Choose A Delimiter</h3>
+                    <div class="alert alert-info"><h3>${_('Choose A Delimiter')}</h3>
                         % if initial:
                         % if initial:
-                                Beeswax has determined that this file is delimited by <strong>${delim_readable}</strong>.
+                            ${_('Beeswax has determined that this file is delimited by')} <strong>${delim_readable}</strong>.
                         % endif
                         % endif
                     </div>
                     </div>
                     <div class="control-group">
                     <div class="control-group">
                         ${comps.bootstrapLabel(delim_form["delimiter"])}
                         ${comps.bootstrapLabel(delim_form["delimiter"])}
                         <div class="controls">
                         <div class="controls">
                             ${comps.field(delim_form["delimiter"], render_default=True)}
                             ${comps.field(delim_form["delimiter"], render_default=True)}
-                            <input id="submit_preview" class="btn btn-info" type="submit" value="Preview" name="submit_preview"/>
+                            <input id="submit_preview" class="btn btn-info" type="submit" value="${_('Preview')}" name="submit_preview"/>
                             <span class="help-block">
                             <span class="help-block">
-                            Enter the column delimiter.  Must be a single character.  Use syntax like "\001" or "\t" for special characters.
+                            ${_('Enter the column delimiter.  Must be a single character.  Use syntax like "\001" or "\t" for special characters.')}
                             </span>
                             </span>
                         </div>
                         </div>
                     </div>
                     </div>
                     <div class="control-group">
                     <div class="control-group">
-                        <label class="control-label">Table preview</label>
+                        <label class="control-label">${_('Table preview')}</label>
                         <div class="controls">
                         <div class="controls">
                             <div class="scrollable">
                             <div class="scrollable">
                                 <table class="table table-striped table-condensed">
                                 <table class="table table-striped table-condensed">
@@ -89,8 +90,8 @@ ${layout.menubar(section='tables')}
                 </fieldset>
                 </fieldset>
 
 
                 <div class="form-actions">
                 <div class="form-actions">
-                    <input class="btn" type="submit" value="Previous" name="cancel_delim"/>
-                    <input class="btn primary" type="submit" name="submit_delim" value="Next" />
+                    <input class="btn" type="submit" value="${_('Previous')}" name="cancel_delim"/>
+                    <input class="btn primary" type="submit" name="submit_delim" value="${_('Next')}" />
                 </div>
                 </div>
             </form>
             </form>
         </div>
         </div>
@@ -108,7 +109,7 @@ ${layout.menubar(section='tables')}
     $(document).ready(function(){
     $(document).ready(function(){
         $(".scrollable").width($(".form-actions").width());
         $(".scrollable").width($(".form-actions").width());
 
 
-        $("#id_delimiter_1").css("margin-left","4px").attr("placeholder","Please write here your delimiter").hide();
+        $("#id_delimiter_1").css("margin-left","4px").attr("placeholder","${_('Please write here your delimiter')}").hide();
         $("#id_delimiter_0").change(function(){
         $("#id_delimiter_0").change(function(){
             if ($(this).val() == "__other__"){
             if ($(this).val() == "__other__"){
                 $("#id_delimiter_1").show();
                 $("#id_delimiter_1").show();

+ 18 - 17
apps/beeswax/src/beeswax/templates/choose_file.mako

@@ -15,34 +15,35 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
-${commonheader("Beeswax: Create table from file", "beeswax", "100px")}
+${commonheader(_('Beeswax: Create table from file'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 
 
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-    <h1>Create a new table from file</h1>
+    <h1>${_('Create a new table from file')}</h1>
     <div class="row-fluid">
     <div class="row-fluid">
         <div class="span3">
         <div class="span3">
             <div class="well sidebar-nav">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                 <ul class="nav nav-list">
-                    <li class="nav-header">Actions</li>
-                    <li><a href="${ url('beeswax.create_table.import_wizard')}">Create a new table from file</a></li>
-                    <li><a href="${ url('beeswax.create_table.create_table')}">Create a new table manually</a></li>
+                    <li class="nav-header">${_('Actions')}</li>
+                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
                 </ul>
                 </ul>
             </div>
             </div>
         </div>
         </div>
         <div class="span9">
         <div class="span9">
             <ul class="nav nav-pills">
             <ul class="nav nav-pills">
-                <li class="active"><a href="${ url('beeswax.create_table.import_wizard') }">Step 1: Choose File</a></li>
-                <li><a id="step2" href="#">Step 2: Choose Delimiter</a></li>
-                <li><a href="#">Step 3: Define Columns</a></li>
+                <li class="active"><a href="${ url('beeswax.create_table.import_wizard') }">${_('Step 1: Choose File')}</a></li>
+                <li><a id="step2" href="#">${_('Step 2: Choose Delimiter')}</a></li>
+                <li><a href="#">${_('Step 3: Define Columns')}</a></li>
             </ul>
             </ul>
             <form action="${action}" method="POST" class="form-horizontal">
             <form action="${action}" method="POST" class="form-horizontal">
                 <fieldset>
                 <fieldset>
-                    <div class="alert alert-info"><h3>Name Your Table and Choose A File</h3></div>
+                    <div class="alert alert-info"><h3>${_('Name Your Table and Choose A File')}</h3></div>
                     <div class="control-group">
                     <div class="control-group">
                         ${comps.bootstrapLabel(file_form["name"])}
                         ${comps.bootstrapLabel(file_form["name"])}
                         <div class="controls">
                         <div class="controls">
@@ -52,7 +53,7 @@ ${layout.menubar(section='tables')}
                             )}
                             )}
                             <span  class="help-inline">${unicode(file_form["name"].errors) | n}</span>
                             <span  class="help-inline">${unicode(file_form["name"].errors) | n}</span>
                         <span class="help-block">
                         <span class="help-block">
-                            Name of the new table.  Table names must be globally unique.  Table names tend to correspond as well to the directory where the data will be stored.
+                            ${_('Name of the new table. Table names must be globally unique. Table names tend to correspond as well to the directory where the data will be stored.')}
                         </span>
                         </span>
                         </div>
                         </div>
                     </div>
                     </div>
@@ -60,13 +61,13 @@ ${layout.menubar(section='tables')}
                         ${comps.bootstrapLabel(file_form["comment"])}
                         ${comps.bootstrapLabel(file_form["comment"])}
                         <div class="controls">
                         <div class="controls">
                             ${comps.field(file_form["comment"],
                             ${comps.field(file_form["comment"],
-                            placeholder="Optional",
+                            placeholder=_("Optional"),
                             klass="",
                             klass="",
                             show_errors=False
                             show_errors=False
                             )}
                             )}
                             <span  class="help-inline">${unicode(file_form["comment"].errors) | n}</span>
                             <span  class="help-inline">${unicode(file_form["comment"].errors) | n}</span>
                         <span class="help-block">
                         <span class="help-block">
-                        Use a table comment to describe your table.  For example, you might mention the data's provenance, and any caveats users of this table should expect.
+                        ${_("Use a table comment to describe your table.  For example, you might mention the data's provenance, and any caveats users of this table should expect.")}
                         </span>
                         </span>
                         </div>
                         </div>
                     </div>
                     </div>
@@ -81,7 +82,7 @@ ${layout.menubar(section='tables')}
                             )}
                             )}
                             <span  class="help-inline">${unicode(file_form["path"].errors) | n}</span>
                             <span  class="help-inline">${unicode(file_form["path"].errors) | n}</span>
                         <span class="help-block">
                         <span class="help-block">
-                        The HDFS path to the file that you would like to base this new table definition on.  It can be compressed (gzip) or not.
+                        ${_('The HDFS path to the file that you would like to base this new table definition on. It can be compressed (gzip) or not.')}
                         </span>
                         </span>
                         </div>
                         </div>
                     </div>
                     </div>
@@ -90,16 +91,16 @@ ${layout.menubar(section='tables')}
                         <div class="controls">
                         <div class="controls">
                             ${comps.field(file_form["do_import"], render_default=True)}
                             ${comps.field(file_form["do_import"], render_default=True)}
                             <span class="help-block">
                             <span class="help-block">
-                        Check this box if you want to import the data in this file after creating the table definition.  Leave it unchecked if you just want to define an empty table.
+                        ${_('Check this box if you want to import the data in this file after creating the table definition. Leave it unchecked if you just want to define an empty table.')}
                         <div id="fileWillBeMoved" class="alert">
                         <div id="fileWillBeMoved" class="alert">
-                            <strong>Warning!</strong> The selected file is going to be moved during the import.
+                            <strong>${_('Warning!')}</strong> ${_('The selected file is going to be moved during the import.')}
                         </div>
                         </div>
                         </span>
                         </span>
                         </div>
                         </div>
                     </div>
                     </div>
                 </fieldset>
                 </fieldset>
                 <div class="form-actions">
                 <div class="form-actions">
-                    <input type="submit" class="btn primary" name="submit_file" value="Next" />
+                    <input type="submit" class="btn primary" name="submit_file" value="${_('Next')}" />
                 </div>
                 </div>
             </form>
             </form>
         </div>
         </div>
@@ -110,7 +111,7 @@ ${layout.menubar(section='tables')}
 <div id="chooseFile" class="modal hide fade">
 <div id="chooseFile" class="modal hide fade">
     <div class="modal-header">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a file</h3>
+        <h3>${_('Choose a file')}</h3>
     </div>
     </div>
     <div class="modal-body">
     <div class="modal-body">
         <div id="filechooser">
         <div id="filechooser">

+ 8 - 7
apps/beeswax/src/beeswax/templates/configuration.mako

@@ -15,25 +15,26 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Hive Configuration Variables", "beeswax", "100px")}
+${commonheader(_('Hive Configuration Variables'), "beeswax", "100px")}
 ${layout.menubar(section='hive configuration')}
 ${layout.menubar(section='hive configuration')}
 <div class="container-fluid">
 <div class="container-fluid">
-	<h1>Hive Configuration Variables</h1>
+	<h1>${_('Hive Configuration Variables')}</h1>
 	<div class="well">
 	<div class="well">
 		<form class="form-search">
 		<form class="form-search">
-			Filter: <input id="filterInput" class="input-xlarge search-query" placeholder="Search for key, value, etc...">
-		    <a href="#" id="clearFilterBtn" class="btn">Clear</a>
+            ${_('Filter:')} <input id="filterInput" class="input-xlarge search-query" placeholder="${_('Search for key, value, etc...')}">
+		    <a href="#" id="clearFilterBtn" class="btn">${_('Clear')}</a>
 		</form>
 		</form>
 	</div>
 	</div>
 	<table class="table table-striped table-condensed datatables">
 	<table class="table table-striped table-condensed datatables">
 		<thead>
 		<thead>
 			<tr>
 			<tr>
-				<th>Key</th>
-				<th>Value</th>
-				<th>Description</th>
+				<th>${_('Key')}</th>
+				<th>${_('Value')}</th>
+				<th>${_('Description')}</th>
 			</tr>
 			</tr>
 		</thead>
 		</thead>
 		<tbody>
 		<tbody>

+ 5 - 4
apps/beeswax/src/beeswax/templates/create_table_index.mako

@@ -15,19 +15,20 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Create Table", "beeswax", "100px")}
+${commonheader(_('Beeswax: Create Table'), "beeswax", "100px")}
 <div class="container-fluid">
 <div class="container-fluid">
   <div class="toolbar">
   <div class="toolbar">
   </div>
   </div>
 
 
 <div id="create_table" class="view">
 <div id="create_table" class="view">
   <div class="bw-create_table_choice">
   <div class="bw-create_table_choice">
-    <h1> How Do You Want to Create Your Table? </h1>
+    <h1>${_('How Do You Want to Create Your Table?')}</h1>
     <ul class="creation_choices">
     <ul class="creation_choices">
-       <li class="clearfix"><a href="${ url('beeswax.create_table.import_wizard')}">Create From File</a></li>
-       <li class="clearfix"><a href="${ url('beeswax.create_table.create_table')}">Create Manually</a></li>
+       <li class="clearfix"><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create From File')}</a></li>
+       <li class="clearfix"><a href="${ url('beeswax.create_table.create_table')}">${_('Create Manually')}</a></li>
     </ul>
     </ul>
   </div>
   </div>
 </div>
 </div>

+ 92 - 100
apps/beeswax/src/beeswax/templates/create_table_manually.mako

@@ -15,37 +15,38 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
     from desktop.views import commonheader, commonfooter
     from desktop.views import commonheader, commonfooter
+    from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Create table manually", "beeswax", "100px")}
+${commonheader(_("Beeswax: Create table manually"), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-<h1>Create a new table manually</h1>
+<h1>${_('Create a new table manually')}</h1>
 <div class="row-fluid">
 <div class="row-fluid">
 <div class="span3">
 <div class="span3">
     <div class="well sidebar-nav">
     <div class="well sidebar-nav">
         <ul class="nav nav-list">
         <ul class="nav nav-list">
-            <li class="nav-header">Actions</li>
-            <li><a href="${ url('beeswax.create_table.import_wizard')}">Create a new table from file</a></li>
-            <li><a href="${ url('beeswax.create_table.create_table')}">Create a new table manually</a></li>
+            <li class="nav-header">${_('Actions')}</li>
+            <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+            <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
         </ul>
         </ul>
     </div>
     </div>
 </div>
 </div>
 <div class="span9">
 <div class="span9">
 <ul class="nav nav-pills">
 <ul class="nav nav-pills">
-    <li class="active"><a href="#step1" class="step">Step 1: Name</a></li>
-    <li><a href="#step2" class="step">Step 2: Record Format</a></li>
-    <li><a href="#step3" class="step">Step 3: Serialization</a></li>
-    <li><a href="#step4" class="step">Step 4: File Format</a></li>
-    <li><a href="#step5" class="step">Step 5: Location</a></li>
-    <li><a href="#step6" class="step">Step 6: Columns</a></li>
+    <li class="active"><a href="#step1" class="step">${_('Step 1: Name')}</a></li>
+    <li><a href="#step2" class="step">${_('Step 2: Record Format')}</a></li>
+    <li><a href="#step3" class="step">${_('Step 3: Serialization')}</a></li>
+    <li><a href="#step4" class="step">${_('Step 4: File Format')}</a></li>
+    <li><a href="#step5" class="step">${_('Step 5: Location')}</a></li>
+    <li><a href="#step6" class="step">${_('Step 6: Columns')}</a></li>
 </ul>
 </ul>
 <form action="#" method="POST" id="mainForm" class="form-horizontal">
 <form action="#" method="POST" id="mainForm" class="form-horizontal">
 <div id="step1" class="stepDetails">
 <div id="step1" class="stepDetails">
     <fieldset>
     <fieldset>
-        <div class="alert alert-info"><h3>Create a table</h3>Let's start with a name and description for where we'll store your data.</div>
+        <div class="alert alert-info"><h3>${_('Create a table')}</h3>${_("Let's start with a name and description for where we'll store your data.")}</div>
         <div class="control-group">
         <div class="control-group">
             ${comps.bootstrapLabel(table_form["name"])}
             ${comps.bootstrapLabel(table_form["name"])}
             <div class="controls">
             <div class="controls">
@@ -54,7 +55,7 @@ ${layout.menubar(section='tables')}
                 )
                 )
                 )}
                 )}
                 <p class="help-block">
                 <p class="help-block">
-                    Name of the new table.  Table names must be globally unique.  Table names tend to correspond as well to the directory where the data will be stored.
+                    ${_('Name of the new table.  Table names must be globally unique.  Table names tend to correspond as well to the directory where the data will be stored.')}
                 </p>
                 </p>
             </div>
             </div>
         </div>
         </div>
@@ -62,11 +63,11 @@ ${layout.menubar(section='tables')}
             ${comps.bootstrapLabel(table_form["comment"])}
             ${comps.bootstrapLabel(table_form["comment"])}
             <div class="controls">
             <div class="controls">
                 ${comps.field(table_form["comment"], attrs=dict(
                 ${comps.field(table_form["comment"], attrs=dict(
-                placeholder='Optional',
+                placeholder=_('Optional'),
                 )
                 )
                 )}
                 )}
                 <p class="help-block">
                 <p class="help-block">
-                    Use a table comment to describe your table.  For example, you might mention the data's provenance, and any caveats users of this table should expect.
+                    ${_("Use a table comment to describe your table.  For example, you might mention the data's provenance, and any caveats users of this table should expect.")}
                 </p>
                 </p>
             </div>
             </div>
         </div>
         </div>
@@ -74,18 +75,14 @@ ${layout.menubar(section='tables')}
 </div>
 </div>
 <div id="step2" class="stepDetails hide">
 <div id="step2" class="stepDetails hide">
     <fieldset>
     <fieldset>
-        <div class="alert alert-info"><h3>Choose Your Record Format</h3>
-            Individual records are broken up into columns
-            either with delimiters (e.g., CSV or TSV) or using
-            a specific serialization / deserialization (SerDe) implementation.
-            (One common specialized SerDe is for parsing out columns with a regular
-            expression.)
+        <div class="alert alert-info"><h3>${_('Choose Your Record Format')}</h3>
+            ${_("Individual records are broken up into columns either with delimiters (e.g., CSV or TSV) or using a specific serialization / deserialization (SerDe) implementation. (One common specialized SerDe is for parsing out columns with a regular expression.)")}
         </div>
         </div>
         <%
         <%
             selected = table_form["row_format"].data or table_form["row_format"].field.initial
             selected = table_form["row_format"].data or table_form["row_format"].field.initial
         %>
         %>
         <div class="control-group">
         <div class="control-group">
-            <label class="control-label" id="formatRadio">Record format</label>
+            <label class="control-label" id="formatRadio">${_('Record format')}</label>
             <div class="controls">
             <div class="controls">
                 <label class="radio">
                 <label class="radio">
                     <input type="radio" name="table-row_format" value="Delimited"
                     <input type="radio" name="table-row_format" value="Delimited"
@@ -93,10 +90,10 @@ ${layout.menubar(section='tables')}
                            checked
                            checked
                         % endif
                         % endif
                             >
                             >
-                    Delimited
-                                <span class="help-inline">
-							    (Data files use delimiters, like commas (CSV) or tabs.)
-							    </span>
+                    ${_('Delimited')}
+                    <span class="help-inline">
+                    ${_('(Data files use delimiters, like commas (CSV) or tabs.)')}
+                    </span>
                 </label>
                 </label>
                 <label class="radio">
                 <label class="radio">
                     <input type="radio" name="table-row_format" value="SerDe"
                     <input type="radio" name="table-row_format" value="SerDe"
@@ -104,10 +101,10 @@ ${layout.menubar(section='tables')}
                            checked
                            checked
                         % endif
                         % endif
                             >
                             >
-                    SerDe
-                                <span class="help-inline">
-                                (Enter a specialized serialization implementation.)
-                                </span>
+                    ${_('SerDe')}
+                    <span class="help-inline">
+                    ${_('(Enter a specialized serialization implementation.)')}
+                    </span>
                 </label>
                 </label>
             </div>
             </div>
         </div>
         </div>
@@ -116,16 +113,16 @@ ${layout.menubar(section='tables')}
 <div id="step3" class="stepDetails hide">
 <div id="step3" class="stepDetails hide">
     <fieldset>
     <fieldset>
         <div id="step3Delimited" class="stepDetailsInner">
         <div id="step3Delimited" class="stepDetailsInner">
-            <div class="alert alert-info"><h3>Configure Record Serialization</h3>
-                Hive only supports single-character delimiters.
+            <div class="alert alert-info"><h3>${_('Configure Record Serialization')}</h3>
+                ${_('Hive only supports single-character delimiters.')}
             </div>
             </div>
             <div class="control-group">
             <div class="control-group">
                 ${comps.bootstrapLabel(table_form["field_terminator"])}
                 ${comps.bootstrapLabel(table_form["field_terminator"])}
                 <div class="controls">
                 <div class="controls">
                     ${comps.field(table_form["field_terminator"], render_default=True)}
                     ${comps.field(table_form["field_terminator"], render_default=True)}
                     <span class="help-block">
                     <span class="help-block">
-								Enter the column delimiter.  Must be a single character.  Use syntax like "\001" or "\t" for special characters.
-								</span>
+                        ${_('Enter the column delimiter.  Must be a single character.  Use syntax like "\001" or "\t" for special characters.')}
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
             <div class="control-group">
             <div class="control-group">
@@ -133,8 +130,8 @@ ${layout.menubar(section='tables')}
                 <div class="controls">
                 <div class="controls">
                     ${comps.field(table_form["collection_terminator"], render_default=True)}
                     ${comps.field(table_form["collection_terminator"], render_default=True)}
                     <span class="help-block">
                     <span class="help-block">
-								Use for array types.
-								</span>
+                        ${_('Use for array types.')}
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
             <div class="control-group">
             <div class="control-group">
@@ -142,13 +139,13 @@ ${layout.menubar(section='tables')}
                 <div class="controls">
                 <div class="controls">
                     ${comps.field(table_form["map_key_terminator"], render_default=True)}
                     ${comps.field(table_form["map_key_terminator"], render_default=True)}
                     <span class="help-block">
                     <span class="help-block">
-								Use for map types.
-								</span>
+                        ${_('Use for map types.')}
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
         <div id="step3SerDe" class="hide stepDetailsInner">
         <div id="step3SerDe" class="hide stepDetailsInner">
-            <div class="alert alert-info"><h3>Configure Record Serialization</h3>
+            <div class="alert alert-info"><h3>${_('Configure Record Serialization')}</h3>
             </div>
             </div>
             <div class="control-group">
             <div class="control-group">
                 ${comps.bootstrapLabel(table_form["serde_name"])}
                 ${comps.bootstrapLabel(table_form["serde_name"])}
@@ -158,8 +155,8 @@ ${layout.menubar(section='tables')}
                     )
                     )
                     )}
                     )}
                     <span class="help-block">
                     <span class="help-block">
-								Enter the Java Classname of your SerDe. <em>e.g.</em>, org.apache.hadoop.hive.contrib.serde2.RegexSerDe
-								</span>
+                        ${_('Enter the Java Classname of your SerDe.')} <em>${_('e.g.')}</em>, org.apache.hadoop.hive.contrib.serde2.RegexSerDe
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
             <div class="control-group">
             <div class="control-group">
@@ -170,8 +167,8 @@ ${layout.menubar(section='tables')}
                     )
                     )
                     )}
                     )}
                     <span class="help-block">
                     <span class="help-block">
-								Properties to pass to the (de)serialization mechanism. <em>e.g.,</em>, "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
-								</span>
+                        ${_('Properties to pass to the (de)serialization mechanism.')} <em>${_('e.g.')},</em>, "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
@@ -179,14 +176,15 @@ ${layout.menubar(section='tables')}
 </div>
 </div>
 <div id="step4" class="stepDetails hide">
 <div id="step4" class="stepDetails hide">
     <fieldset>
     <fieldset>
-        <div class="alert alert-info"><h3>Choose a File Format</h3>
-            Use <strong>TextFile</strong> for newline-delimited text files.
-            Use <strong>SequenceFile</strong> for Hadoop's binary serialization format.
-            Use <strong>InputFormat</strong> to choose a custom implementation.<br/>
+        <div class="alert alert-info"><h3>${_('Choose a File Format')}</h3>
+            ${_('Use')} <strong>TextFile</strong> ${_('for newline-delimited text files.')}
+            ${_('Use')} <strong>SequenceFile</strong> ${_("for Hadoop's binary serialization format.")}
+            ${_('Use')} <strong>InputFormat</strong> ${_('to choose a custom implementation.')}
+            <br/>
         </div>
         </div>
 
 
         <div class="control-group">
         <div class="control-group">
-            <label id="fileFormatRadio" class="control-label">File format</label>
+            <label id="fileFormatRadio" class="control-label">${_('File format')}</label>
             <div class="controls">
             <div class="controls">
                 ${comps.field(table_form["file_format"],
                 ${comps.field(table_form["file_format"],
                 render_default=True,
                 render_default=True,
@@ -204,8 +202,8 @@ ${layout.menubar(section='tables')}
                     )
                     )
                     )}
                     )}
                     <span class="help-block">
                     <span class="help-block">
-								Java Class used to read data
-								</span>
+                        ${_('Java Class used to read data')}
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
             <div class="control-group">
             <div class="control-group">
@@ -216,8 +214,8 @@ ${layout.menubar(section='tables')}
                     )
                     )
                     )}
                     )}
                     <span class="help-block">
                     <span class="help-block">
-								Java Class used to write data
-								</span>
+                        ${_('Java Class used to write data')}
+                    </span>
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
@@ -225,21 +223,21 @@ ${layout.menubar(section='tables')}
 </div>
 </div>
 <div id="step5" class="stepDetails hide">
 <div id="step5" class="stepDetails hide">
     <fieldset>
     <fieldset>
-        <div class="alert alert-info"><h3>Choose Where Your Table's Data is Stored</h3>
+        <div class="alert alert-info"><h3>${_("Choose Where Your Table's Data is Stored")}</h3>
         </div>
         </div>
 
 
         <div class="control-group">
         <div class="control-group">
-            <label class="control-label">Location</label>
+            <label class="control-label">${_('Location')}</label>
             <div class="controls">
             <div class="controls">
                 <label class="checkbox">
                 <label class="checkbox">
                     ${comps.field(table_form["use_default_location"],
                     ${comps.field(table_form["use_default_location"],
                     render_default=True
                     render_default=True
                     )}
                     )}
-                    Use default location
+                    ${_('Use default location')}
                 </label>
                 </label>
-							<span class="help-block">
-                                Store your table in the default location (controlled by Hive, and typically <em>/user/hive/warehouse/table_name</em>).
-							</span>
+                <span class="help-block">
+                    ${_('Store your table in the default location (controlled by Hive, and typically')} <em>/user/hive/warehouse/table_name</em>).
+                </span>
             </div>
             </div>
         </div>
         </div>
 
 
@@ -250,17 +248,17 @@ ${layout.menubar(section='tables')}
                 placeholder='/user/user_name/data_dir',
                 placeholder='/user/user_name/data_dir',
                 )
                 )
                 )}
                 )}
-                <span class="help-inline"><a id="pathChooser" href="#" class="btn" data-filechooser-destination="table-external_location">Choose File</a></span>
-                            <span class="help-block">
-                            Enter the path (on HDFS) to your table's data location
-                            </span>
+                <span class="help-inline"><a id="pathChooser" href="#" class="btn" data-filechooser-destination="table-external_location">${_('Choose File')}</a></span>
+                <span class="help-block">
+                ${_("Enter the path (on HDFS) to your table's data location")}
+                </span>
             </div>
             </div>
         </div>
         </div>
     </fieldset>
     </fieldset>
 </div>
 </div>
 <div id="step6" class="stepDetails hide">
 <div id="step6" class="stepDetails hide">
     <fieldset>
     <fieldset>
-        <div class="alert alert-info"><h3>Configure Table Columns</h3>
+        <div class="alert alert-info"><h3>${_('Configure Table Columns')}</h3>
         </div>
         </div>
         % for form in columns_form.forms:
         % for form in columns_form.forms:
             ${render_column(form)}
             ${render_column(form)}
@@ -268,21 +266,15 @@ ${layout.menubar(section='tables')}
         <div class="hide">
         <div class="hide">
             ${unicode(columns_form.management_form) | n}
             ${unicode(columns_form.management_form) | n}
         </div>
         </div>
-        <button class="btn" value="True" name="columns-add" type="submit">Add a column</button>
+        <button class="btn" value="True" name="columns-add" type="submit">${_('Add a column')}</button>
     </fieldset>
     </fieldset>
     <br/><br/>
     <br/><br/>
     <fieldset>
     <fieldset>
-        <div class="alert alert-info"><h3>Configure Partitions</h3>
-            If your data is naturally partitioned (by, say, date),
-            partitions are a way to tell Hive that data
-            for a specific partition value are stored together.
-            Hive establishes a mapping between directories on disk
-            (<em>e.g.,</em> <code>/user/hive/warehouse/logs/dt=20100101/</code>)
-            and the data for that day.  Partitions are virtual
-            columns; they are not represented in the data themselves,
-            but are determined by the data location.  Hive implements
-            query optimizations such that queries that are specific
-            to a single partition need not read the data in other partitions.
+        <div class="alert alert-info"><h3>${_('Configure Partitions')}</h3>
+            ${_('If your data is naturally partitioned (by, say, date), partitions are a way to tell Hive that data for a specific partition value are stored together.')}
+            ${_('Hive establishes a mapping between directories on disk')}
+            (<em>${_('e.g.')},</em> <code>/user/hive/warehouse/logs/dt=20100101/</code>)
+            ${_('and the data for that day.  Partitions are virtual columns; they are not represented in the data themselves, but are determined by the data location. Hive implements query optimizations such that queries that are specific to a single partition need not read the data in other partitions.')}
         </div>
         </div>
         % for form in partitions_form.forms:
         % for form in partitions_form.forms:
             ${render_column(form, True)}
             ${render_column(form, True)}
@@ -290,14 +282,14 @@ ${layout.menubar(section='tables')}
         <div class="hide">
         <div class="hide">
             ${unicode(partitions_form.management_form) | n}
             ${unicode(partitions_form.management_form) | n}
         </div>
         </div>
-        <button class="btn" value="True" name="partitions-add" type="submit">Add a partition</button>
+        <button class="btn" value="True" name="partitions-add" type="submit">${_('Add a partition')}</button>
 
 
     </fieldset>
     </fieldset>
 </div>
 </div>
 <div class="form-actions">
 <div class="form-actions">
-    <input id="backBtn" type="button" class="btn hide" value="Back" />
-    <input id="nextBtn" type="button" class="btn primary" value="Next" />
-    <input id="submit" type="submit" class="btn primary hide" value="Create table" />
+    <input id="backBtn" type="button" class="btn hide" value="${_('Back')}" />
+    <input id="nextBtn" type="button" class="btn primary" value="${_('Next')}" />
+    <input id="submit" type="submit" class="btn primary hide" value="${_('Create table')}" />
 </div>
 </div>
 </form>
 </form>
 </div>
 </div>
@@ -312,59 +304,59 @@ ${layout.menubar(section='tables')}
         <div class="remove">
         <div class="remove">
         ${comps.field(form['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
         ${comps.field(form['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
         type="submit",
         type="submit",
-        title="Delete this column",
+        title=_("Delete this column"),
         klass="btn btn-mini removeBtn"
         klass="btn btn-mini removeBtn"
         ), value=True)}
         ), value=True)}
         </div>
         </div>
         <div class="control-group">
         <div class="control-group">
-            <label class="control-label">Column name</label>
+            <label class="control-label">${_('Column name')}</label>
             <div class="controls">
             <div class="controls">
-                <input name="${form["column_name"].html_name | n}" value="${form["column_name"].data or ''}" placeholder="Column Name"/>
+                <input name="${form["column_name"].html_name | n}" value="${form["column_name"].data or ''}" placeholder="${_('Column Name')}"/>
                 <span class="help-inline">
                 <span class="help-inline">
-                Column name must be single words that start with a letter or a digit.
+                ${_('Column name must be single words that start with a letter or a digit.')}
                 </span>
                 </span>
             </div>
             </div>
         </div>
         </div>
         <div class="control-group">
         <div class="control-group">
-            <label class="control-label">Column type</label>
+            <label class="control-label">${_('Column type')}</label>
             <div class="controls columnType">
             <div class="controls columnType">
             ${comps.field(form["column_type"],
             ${comps.field(form["column_type"],
             render_default=True
             render_default=True
             )}
             )}
-                <span class="help-inline">
-                Type for this column.  Certain advanced types (namely, structs) are not exposed in this interface.
-                </span>
+            <span class="help-inline">
+            ${_('Type for this column. Certain advanced types (namely, structs) are not exposed in this interface.')}
+            </span>
             </div>
             </div>
         </div>
         </div>
         % if is_partition_form == False:
         % if is_partition_form == False:
                 <div class="arraySpec hide">
                 <div class="arraySpec hide">
                     <div class="control-group">
                     <div class="control-group">
-                        <label class="control-label">Array value type</label>
+                        <label class="control-label">${_('Array value type')}</label>
                         <div class="controls">
                         <div class="controls">
                         ${comps.field(form["array_type"], render_default=True)}
                         ${comps.field(form["array_type"], render_default=True)}
                             <span class="help-inline">
                             <span class="help-inline">
-                            Type of the array values.
-                        </span>
+                            ${_('Type of the array values.')}
+                            </span>
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
                 <div class="mapSpec hide">
                 <div class="mapSpec hide">
                     <div class="control-group">
                     <div class="control-group">
-                        <label class="control-label">Map Key type</label>
+                        <label class="control-label">${_('Map Key type')}</label>
                         <div class="controls">
                         <div class="controls">
                         ${comps.field(form["map_key_type"], render_default=True)}
                         ${comps.field(form["map_key_type"], render_default=True)}
                             <span class="help-inline">
                             <span class="help-inline">
-                        Type of the map keys.
-                        </span>
+                            ${_('Type of the map keys.')}
+                            </span>
                         </div>
                         </div>
                     </div>
                     </div>
                     <div class="control-group">
                     <div class="control-group">
-                        <label class="control-label">Map Value type</label>
+                        <label class="control-label">${_('Map Value type')}</label>
                         <div class="controls">
                         <div class="controls">
                         ${comps.field(form["map_value_type"], render_default=True)}
                         ${comps.field(form["map_value_type"], render_default=True)}
                             <span class="help-inline">
                             <span class="help-inline">
-                            Type of the map values.
-                        </span>
+                            ${_('Type of the map values.')}
+                            </span>
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
@@ -381,7 +373,7 @@ ${layout.menubar(section='tables')}
 <div id="chooseFile" class="modal hide fade">
 <div id="chooseFile" class="modal hide fade">
     <div class="modal-header">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a file</h3>
+        <h3>${_('Choose a file')}</h3>
     </div>
     </div>
     <div class="modal-body">
     <div class="modal-body">
         <div id="filechooser">
         <div id="filechooser">
@@ -455,7 +447,7 @@ ${layout.menubar(section='tables')}
             $(".step[href='"+_url.substring(_url.indexOf("#"),_url.length)+"']").click();
             $(".step[href='"+_url.substring(_url.indexOf("#"),_url.length)+"']").click();
         }
         }
 
 
-        $("#id_table-field_terminator_1").css("margin-left","4px").attr("placeholder","Write here your field terminator").hide();
+        $("#id_table-field_terminator_1").css("margin-left","4px").attr("placeholder","${_('Write here your field terminator')}").hide();
         $("#id_table-field_terminator_0").change(function(){
         $("#id_table-field_terminator_0").change(function(){
             if ($(this).val() == "__other__"){
             if ($(this).val() == "__other__"){
                 $("#id_table-field_terminator_1").show();
                 $("#id_table-field_terminator_1").show();
@@ -464,7 +456,7 @@ ${layout.menubar(section='tables')}
                 $("#id_table-field_terminator_1").hide();
                 $("#id_table-field_terminator_1").hide();
             }
             }
         });
         });
-        $("#id_table-collection_terminator_1").css("margin-left","4px").attr("placeholder","Write here your collection terminator").hide();
+        $("#id_table-collection_terminator_1").css("margin-left","4px").attr("placeholder","${_('Write here your collection terminator')}").hide();
         $("#id_table-collection_terminator_0").change(function(){
         $("#id_table-collection_terminator_0").change(function(){
             if ($(this).val() == "__other__"){
             if ($(this).val() == "__other__"){
                 $("#id_table-collection_terminator_1").show();
                 $("#id_table-collection_terminator_1").show();
@@ -473,7 +465,7 @@ ${layout.menubar(section='tables')}
                 $("#id_table-collection_terminator_1").hide();
                 $("#id_table-collection_terminator_1").hide();
             }
             }
         });
         });
-        $("#id_table-map_key_terminator_1").css("margin-left","4px").attr("placeholder","Write here your map key terminator").hide();
+        $("#id_table-map_key_terminator_1").css("margin-left","4px").attr("placeholder","${_('Write here your map key terminator')}").hide();
         $("#id_table-map_key_terminator_0").change(function(){
         $("#id_table-map_key_terminator_0").change(function(){
             if ($(this).val() == "__other__"){
             if ($(this).val() == "__other__"){
                 $("#id_table-map_key_terminator_1").show();
                 $("#id_table-map_key_terminator_1").show();

+ 14 - 13
apps/beeswax/src/beeswax/templates/define_columns.mako

@@ -15,30 +15,31 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Create table from file", "beeswax", "100px")}
+${commonheader(_('Beeswax: Create table from file'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-    <h1>Create a new table from file</h1>
+    <h1>${_('Create a new table from file')}</h1>
     <div class="row-fluid">
     <div class="row-fluid">
         <div class="span3">
         <div class="span3">
             <div class="well sidebar-nav">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                 <ul class="nav nav-list">
-                    <li class="nav-header">Actions</li>
-                    <li><a href="${ url('beeswax.create_table.import_wizard')}">Create a new table from file</a></li>
-                    <li><a href="${ url('beeswax.create_table.create_table')}">Create a new table manually</a></li>
+                    <li class="nav-header">${_('Actions')}</li>
+                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
                 </ul>
                 </ul>
             </div>
             </div>
         </div>
         </div>
         <div class="span9">
         <div class="span9">
             <ul class="nav nav-pills">
             <ul class="nav nav-pills">
-                <li><a id="step1" href="#">Step 1: Choose File</a></li>
-                <li><a id="step2" href="#">Step 2: Choose Delimiter</a></li>
-                <li class="active"><a href="#">Step 3: Define Columns</a></li>
+                <li><a id="step1" href="#">${_('Step 1: Choose File')}</a></li>
+                <li><a id="step2" href="#">${_('Step 2: Choose Delimiter')}</a></li>
+                <li class="active"><a href="#">${_('Step 3: Define Columns')}</a></li>
             </ul>
             </ul>
             <form action="${action}" method="POST" class="form-stacked">
             <form action="${action}" method="POST" class="form-stacked">
                 <div class="hide">
                 <div class="hide">
@@ -51,7 +52,7 @@ ${layout.menubar(section='tables')}
                     if n_rows > 2: n_rows = 2
                     if n_rows > 2: n_rows = 2
                 %>
                 %>
                 <fieldset>
                 <fieldset>
-                    <div class="alert alert-info"><h3>Define your columns</h3></div>
+                    <div class="alert alert-info"><h3>${_('Define your columns')}</h3></div>
                     <div class="control-group">
                     <div class="control-group">
                         <div class="controls">
                         <div class="controls">
                             <div class="scrollable">
                             <div class="scrollable">
@@ -63,7 +64,7 @@ ${layout.menubar(section='tables')}
                                                 ${comps.label(form["column_name"])}
                                                 ${comps.label(form["column_name"])}
                                                 ${comps.field(form["column_name"],
                                                 ${comps.field(form["column_name"],
                                                 render_default=False,
                                                 render_default=False,
-                                                placeholder="Column name"
+                                                placeholder=_("Column name")
                                                 )}
                                                 )}
                                                     <br/><br/>
                                                     <br/><br/>
                                                 ${comps.label(form["column_type"])}
                                                 ${comps.label(form["column_type"])}
@@ -76,7 +77,7 @@ ${layout.menubar(section='tables')}
                                     </tr>
                                     </tr>
                                     % for i, row in enumerate(fields_list[:n_rows]):
                                     % for i, row in enumerate(fields_list[:n_rows]):
                                         <tr>
                                         <tr>
-                                            <td><em>Row #${i + 1}</em></td>
+                                            <td><em>${_('Row')} #${i + 1}</em></td>
                                         % for val in row:
                                         % for val in row:
                                                 <td>${val}</td>
                                                 <td>${val}</td>
                                         % endfor
                                         % endfor
@@ -88,8 +89,8 @@ ${layout.menubar(section='tables')}
                     </div>
                     </div>
                 </fieldset>
                 </fieldset>
                 <div class="form-actions">
                 <div class="form-actions">
-                    <input class="btn" type="submit" name="cancel_create" value="Previous" />
-                    <input class="btn primary" type="submit" name="submit_create" value="Create Table" />
+                    <input class="btn" type="submit" name="cancel_create" value="${_('Previous')}" />
+                    <input class="btn primary" type="submit" name="submit_create" value="${_('Create Table')}" />
                 </div>
                 </div>
             </form>
             </form>
         </div>
         </div>

+ 5 - 4
apps/beeswax/src/beeswax/templates/describe_partitions.mako

@@ -17,20 +17,21 @@
   from urllib import quote
   from urllib import quote
   from filebrowser.views import location_to_url 
   from filebrowser.views import location_to_url 
   from desktop.views import commonheader, commonfooter
   from desktop.views import commonheader, commonfooter
+  from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax Table Partitions: " + table.tableName, "beeswax", "100px")}
+${commonheader(_('Beeswax Table Partitions: %(tableName)s') % dict(tableName=table.tableName), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-<h1>Partitions</h1>
+<h1>${_('Partitions')}</h1>
 
 
 <table>
 <table>
 <tr>
 <tr>
   % for field in table.partitionKeys:
   % for field in table.partitionKeys:
   <th>${field.name}</th>
   <th>${field.name}</th>
   % endfor
   % endfor
-  <th></th>## Extra column for command links.
+  <th></th>## ${_('Extra column for command links.')}
 </tr>
 </tr>
 % if len(partitions) > 0:
 % if len(partitions) > 0:
   % for partition in partitions:
   % for partition in partitions:
@@ -49,7 +50,7 @@ ${layout.menubar(section='tables')}
   </tr>
   </tr>
   % endfor
   % endfor
 % else:
 % else:
-  <tr><td>Table has no partitions.</td></tr>
+  <tr><td>${_('Table has no partitions.')}</td></tr>
 % endif
 % endif
 </table>
 </table>
 </div>
 </div>

+ 25 - 24
apps/beeswax/src/beeswax/templates/describe_table.mako

@@ -15,25 +15,26 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%
 <%
   if is_view:
   if is_view:
-    view_or_table_noun = "View"
+    view_or_table_noun = _("View")
   else:
   else:
-    view_or_table_noun = "Table"
+    view_or_table_noun = _("Table")
 %>
 %>
-${commonheader("Beeswax %s Metadata: %s" % (view_or_table_noun, table.tableName), "beeswax", "100px")}
+${commonheader(_("Beeswax %s Metadata: %s") % (view_or_table_noun, table.tableName), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 <%def name="column_table(cols)">
 <%def name="column_table(cols)">
 
 
     <table class="table table-striped table-condensed datatables">
     <table class="table table-striped table-condensed datatables">
       <thead>
       <thead>
         <tr>
         <tr>
-          <th>Name</th>
-          <th>Type</th>
-          <th>Comment</th>
+          <th>${_('Name')}</th>
+          <th>${_('Type')}</th>
+          <th>${_('Comment')}</th>
         </tr>
         </tr>
       </thead>
       </thead>
       <tbody>
       <tbody>
@@ -50,16 +51,16 @@ ${layout.menubar(section='tables')}
 </%def>
 </%def>
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-	<h1>Beeswax Table Metadata: ${table.tableName}</h1>
+	<h1>${_('Beeswax Table Metadata:')} ${table.tableName}</h1>
 	<div class="row-fluid">
 	<div class="row-fluid">
 		<div class="span3">
 		<div class="span3">
 			<div class="well sidebar-nav">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 				<ul class="nav nav-list">
-					<li class="nav-header">Actions</li>
-					<li><a href="#importData" data-toggle="modal">Import Data</a></li>
-					<li><a href="${ url("beeswax.views.read_table", table=table_name) }">Browse Data</a></li>
-			        <li><a href="#dropTable" data-toggle="modal">Drop ${view_or_table_noun}</a></li>
-			        <li><a href="${hdfs_link}" rel="${ table.sd.location }">View File Location</a></li>
+					<li class="nav-header">${_('Actions')}</li>
+					<li><a href="#importData" data-toggle="modal">${_('Import Data')}</a></li>
+					<li><a href="${ url("beeswax.views.read_table", table=table_name) }">${_('Browse Data')}</a></li>
+			        <li><a href="#dropTable" data-toggle="modal">${_('Drop')} ${view_or_table_noun}</a></li>
+			        <li><a href="${hdfs_link}" rel="${ table.sd.location }">${_('View File Location')}</a></li>
 				</ul>
 				</ul>
 			</div>
 			</div>
 		</div>
 		</div>
@@ -69,12 +70,12 @@ ${layout.menubar(section='tables')}
 			% endif
 			% endif
 
 
 			<ul class="nav nav-tabs">
 			<ul class="nav nav-tabs">
-				<li class="active"><a href="#columns" data-toggle="tab">Columns</a></li>
+				<li class="active"><a href="#columns" data-toggle="tab">${_('Columns')}</a></li>
 		        % if len(table.partitionKeys) > 0:
 		        % if len(table.partitionKeys) > 0:
-					<li><a href="#partitionColumns" data-toggle="tab">Partition Columns</a></li>
+					<li><a href="#partitionColumns" data-toggle="tab">${_('Partition Columns')}</a></li>
 		        % endif
 		        % endif
 				% if top_rows is not None:
 				% if top_rows is not None:
-					<li><a href="#sample" data-toggle="tab">Sample</a></li>
+					<li><a href="#sample" data-toggle="tab">${_('Sample')}</a></li>
 				% endif
 				% endif
 			</ul>
 			</ul>
 
 
@@ -85,7 +86,7 @@ ${layout.menubar(section='tables')}
 		        % if len(table.partitionKeys) > 0:
 		        % if len(table.partitionKeys) > 0:
 		          <div class="tab-pane" id="partitionColumns">
 		          <div class="tab-pane" id="partitionColumns">
 		            ${column_table(table.partitionKeys)}
 		            ${column_table(table.partitionKeys)}
-		            <a href="${ url("beeswax.views.describe_partitions", table=table_name) }">Show Partitions</a>
+		            <a href="${ url("beeswax.views.describe_partitions", table=table_name) }">${_('Show Partitions')}</a>
 		          </div>
 		          </div>
 		        % endif
 		        % endif
 				% if top_rows is not None:
 				% if top_rows is not None:
@@ -122,7 +123,7 @@ ${layout.menubar(section='tables')}
 	<form id="dropTableForm" method="POST" action="${ url("beeswax.views.drop_table", table=table_name) }">
 	<form id="dropTableForm" method="POST" action="${ url("beeswax.views.drop_table", table=table_name) }">
 	<div class="modal-header">
 	<div class="modal-header">
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
-		<h3>Drop Table</h3>
+		<h3>${_('Drop Table')}</h3>
 	</div>
 	</div>
 	<div class="modal-body">
 	<div class="modal-body">
 	  <div id="dropTableMessage" class="alert">
 	  <div id="dropTableMessage" class="alert">
@@ -130,8 +131,8 @@ ${layout.menubar(section='tables')}
 	  </div>
 	  </div>
 	</div>
 	</div>
 	<div class="modal-footer">
 	<div class="modal-footer">
-		<input type="submit" class="btn primary" value="Yes"/>
-		<a href="#" class="btn secondary hideModal">No</a>
+		<input type="submit" class="btn primary" value="${_('Yes')}"/>
+		<a href="#" class="btn secondary hideModal">${_('No')}</a>
 	</div>
 	</div>
 	</form>
 	</form>
 </div>
 </div>
@@ -142,11 +143,11 @@ ${layout.menubar(section='tables')}
 	<form method="POST" action="${ url("beeswax.views.load_table", table=table_name) }" class="form-stacked">
 	<form method="POST" action="${ url("beeswax.views.load_table", table=table_name) }" class="form-stacked">
 	<div class="modal-header">
 	<div class="modal-header">
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
-		<h3>Import data</h3>
+		<h3>${_('Import data')}</h3>
 	</div>
 	</div>
 	<div class="modal-body">
 	<div class="modal-body">
 	  <div class="alert">
 	  <div class="alert">
-	        <p>Note that loading data will move data from its location into the table's storage location.</p>
+	        <p>${_("Note that loading data will move data from its location into the table's storage location.")}</p>
 	  </div>
 	  </div>
 
 
 
 
@@ -175,7 +176,7 @@ ${layout.menubar(section='tables')}
 
 
 		<div class="clearfix">
 		<div class="clearfix">
 			<div class="input">
 			<div class="input">
-				<input type="checkbox" name="overwrite"/> Overwrite existing data
+				<input type="checkbox" name="overwrite"/> ${_('Overwrite existing data')}
 			</div>
 			</div>
 		</div>
 		</div>
 
 
@@ -184,8 +185,8 @@ ${layout.menubar(section='tables')}
 	</div>
 	</div>
 	</div>
 	</div>
 	<div class="modal-footer">
 	<div class="modal-footer">
-		<input type="submit" class="btn primary" value="Submit"/>
-		<a href="#" class="btn secondary" data-dismiss="modal">Cancel</a>
+		<input type="submit" class="btn primary" value="${_('Submit')}"/>
+		<a href="#" class="btn secondary" data-dismiss="modal">${_('Cancel')}</a>
 	</div>
 	</div>
 	</form>
 	</form>
 </div>
 </div>

+ 33 - 32
apps/beeswax/src/beeswax/templates/execute.mako

@@ -16,6 +16,7 @@
 <%!
 <%!
   from desktop.lib.django_util import extract_field_data
   from desktop.lib.django_util import extract_field_data
   from desktop.views import commonheader, commonfooter
   from desktop.views import commonheader, commonfooter
+  from django.utils.translation import ugettext as _
 %>
 %>
 
 
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
@@ -23,7 +24,7 @@
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
 
 
 <%def name="query()">
 <%def name="query()">
-    <h1>Hive Query</h1>
+    <h1>${_('Hive Query')}</h1>
     <fieldset>
     <fieldset>
         % if design and not design.is_auto and design.name:
         % if design and not design.is_auto and design.name:
               <legend>${design.name}</legend>
               <legend>${design.name}</legend>
@@ -32,12 +33,12 @@
               % endif
               % endif
 
 
           % else:
           % else:
-            <legend>Query</legend>
+            <legend>${_('Query')}</legend>
           % endif
           % endif
 
 
       <div class="clearfix">
       <div class="clearfix">
         <div class="input">
         <div class="input">
-            <textarea class="span9" rows="9" placeholder="Example: SELECT * FROM tablename" name="${form.query["query"].html_name | n}" id="queryField">${extract_field_data(form.query["query"]) or ''}</textarea>
+            <textarea class="span9" rows="9" placeholder="${_('Example: SELECT * FROM tablename')}" name="${form.query["query"].html_name | n}" id="queryField">${extract_field_data(form.query["query"]) or ''}</textarea>
             <div id="validationResults">
             <div id="validationResults">
             % if len(form.query["query"].errors):
             % if len(form.query["query"].errors):
                 ${unicode(form.query["query"].errors) | n}
                 ${unicode(form.query["query"].errors) | n}
@@ -48,18 +49,18 @@
     </fieldset>
     </fieldset>
 
 
     <div class="actions">
     <div class="actions">
-        <a id="executeQuery" class="btn primary">Execute</a>
+        <a id="executeQuery" class="btn primary">${_('Execute')}</a>
         % if design and not design.is_auto and design.name:
         % if design and not design.is_auto and design.name:
-        <a id="saveQuery" class="btn">Save</a>
+        <a id="saveQuery" class="btn">${_('Save')}</a>
         % endif
         % endif
-        <a id="saveQueryAs" class="btn">Save as...</a>
-        <a id="explainQuery" class="btn">Explain</a>
-        &nbsp; or create a &nbsp;<a class="btn" href="${ url('beeswax.views.execute_query') }">New query</a>
+        <a id="saveQueryAs" class="btn">${_('Save as...')}</a>
+        <a id="explainQuery" class="btn">${_('Explain')}</a>
+        &nbsp; ${_('or create a')} &nbsp;<a class="btn" href="${ url('beeswax.views.execute_query') }">${_('New query')}</a>
     </div>
     </div>
 </%def>
 </%def>
 
 
 
 
-${commonheader("Hive Query", "beeswax", "100px")}
+${commonheader(_('Hive Query'), "beeswax", "100px")}
 ${layout.menubar(section='query')}
 ${layout.menubar(section='query')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
@@ -68,14 +69,14 @@ ${layout.menubar(section='query')}
             <div class="well sidebar-nav">
             <div class="well sidebar-nav">
                 <form id="advancedSettingsForm" action="${action}" method="POST" class="form form-horizontal noPadding">
                 <form id="advancedSettingsForm" action="${action}" method="POST" class="form form-horizontal noPadding">
                     <ul class="nav nav-list">
                     <ul class="nav nav-list">
-                        <li class="nav-header">Hive settings</li>
+                        <li class="nav-header">${_('Hive settings')}</li>
                         <li>
                         <li>
                             % for i, f in enumerate(form.settings.forms):
                             % for i, f in enumerate(form.settings.forms):
                             <div class="param">
                             <div class="param">
                                 <div class="remove">
                                 <div class="remove">
                                     ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                     ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                         type="submit",
                                         type="submit",
-                                        title="Delete this setting",
+                                        title=_("Delete this setting"),
                                         klass="btn btn-mini settingsDelete"
                                         klass="btn btn-mini settingsDelete"
                                     ), value=True)}
                                     ), value=True)}
                                 </div>
                                 </div>
@@ -100,17 +101,17 @@ ${layout.menubar(section='query')}
 
 
                             % endfor
                             % endfor
                             <div class="control-group">
                             <div class="control-group">
-                                <a class="btn btn-small" data-form-prefix="settings">Add</a>
+                                <a class="btn btn-small" data-form-prefix="settings">${_('Add')}</a>
                             </div>
                             </div>
                         </li>
                         </li>
-                        <li class="nav-header">File Resources</li>
+                        <li class="nav-header">${_('File Resources')}</li>
                         <li>
                         <li>
                             % for i, f in enumerate(form.file_resources.forms):
                             % for i, f in enumerate(form.file_resources.forms):
                             <div class="param">
                             <div class="param">
                                 <div class="remove">
                                 <div class="remove">
                                     ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                     ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                         type="submit",
                                         type="submit",
-                                        title="Delete this setting",
+                                        title=_("Delete this setting"),
                                         klass="btn btn-mini file_resourcesDelete"
                                         klass="btn btn-mini file_resourcesDelete"
                                     ), value=True)}
                                     ), value=True)}
                                 </div>
                                 </div>
@@ -135,17 +136,17 @@ ${layout.menubar(section='query')}
 
 
                             % endfor
                             % endfor
                             <div class="control-group">
                             <div class="control-group">
-                                <a class="btn btn-small" data-form-prefix="file_resources">Add</a>
+                                <a class="btn btn-small" data-form-prefix="file_resources">${_('Add')}</a>
                             </div>
                             </div>
                         </li>
                         </li>
-                        <li class="nav-header">User-defined Functions</li>
+                        <li class="nav-header">${_('User-defined Functions')}</li>
                         <li>
                         <li>
                             % for i, f in enumerate(form.functions.forms):
                             % for i, f in enumerate(form.functions.forms):
                                 <div class="param">
                                 <div class="param">
                                     <div class="remove">
                                     <div class="remove">
                                         ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                         ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                             type="submit",
                                             type="submit",
-                                            title="Delete this setting",
+                                            title=_("Delete this setting"),
                                             klass="btn btn-mini file_resourcesDelete"
                                             klass="btn btn-mini file_resourcesDelete"
                                         ), value=True)}
                                         ), value=True)}
                                     </div>
                                     </div>
@@ -170,28 +171,28 @@ ${layout.menubar(section='query')}
                               ${comps.field(f['_exists'], hidden=True)}
                               ${comps.field(f['_exists'], hidden=True)}
                             % endfor
                             % endfor
                             <div class="control-group">
                             <div class="control-group">
-                                <a class="btn btn-small" data-form-prefix="functions">Add</a>
+                                <a class="btn btn-small" data-form-prefix="functions">${_('Add')}</a>
                             </div>
                             </div>
                         </li>
                         </li>
-                        <li class="nav-header">Parametrization</li>
+                        <li class="nav-header">${_('Parametrization')}</li>
                         <li>
                         <li>
                             ${comps.field(form.query["is_parameterized"],
                             ${comps.field(form.query["is_parameterized"],
                                 notitle = True,
                                 notitle = True,
                                 tag = "checkbox",
                                 tag = "checkbox",
-                                button_text = "Enable Parameterization",
-                                help = "If checked (the default), you can include parameters like $parameter_name in your query, and users will be prompted for a value when the query is run.",
+                                button_text = _("Enable Parameterization"),
+                                help = _("If checked (the default), you can include parameters like $parameter_name in your query, and users will be prompted for a value when the query is run."),
                                 help_attrs= dict(
                                 help_attrs= dict(
                                   data_help_direction='11'
                                   data_help_direction='11'
                                 )
                                 )
                             )}
                             )}
                         </li>
                         </li>
-                        <li class="nav-header">Email Notification</li>
+                        <li class="nav-header">${_('Email Notification')}</li>
                         <li>
                         <li>
                             ${comps.field(form.query["email_notify"],
                             ${comps.field(form.query["email_notify"],
                               notitle = True,
                               notitle = True,
                               tag = "checkbox",
                               tag = "checkbox",
-                              button_text = "Email me on complete",
-                              help = "If checked, you will receive an email notification when the query completes.",
+                              button_text = _("Email me on complete"),
+                              help = _("If checked, you will receive an email notification when the query completes."),
                               help_attrs= dict(
                               help_attrs= dict(
                                 data_help_direction='11'
                                 data_help_direction='11'
                               )
                               )
@@ -205,10 +206,10 @@ ${layout.menubar(section='query')}
         <div class="span9">
         <div class="span9">
             % if error_message:
             % if error_message:
                 <div class="alert alert-error">
                 <div class="alert alert-error">
-                    <p><strong>Your query has the following error(s):</strong></p>
+                    <p><strong>${_('Your query has the following error(s):')}</strong></p>
                     <p>${error_message}</p>
                     <p>${error_message}</p>
                     % if log:
                     % if log:
-                        <small>click the <b>Error Log</b> tab below for details</small>
+                        <small>${_('click the')} <b>${_('Error Log')}</b> ${_('tab below for details')}</small>
                     % endif
                     % endif
                 </div>
                 </div>
             % endif
             % endif
@@ -220,13 +221,13 @@ ${layout.menubar(section='query')}
             % if error_messages or log:
             % if error_messages or log:
                 <ul class="nav nav-tabs">
                 <ul class="nav nav-tabs">
                     <li class="active">
                     <li class="active">
-                        <a href="#queryPane" data-toggle="tab">Query</a>
+                        <a href="#queryPane" data-toggle="tab">${_('Query')}</a>
                     </li>
                     </li>
                     % if error_message or log:
                     % if error_message or log:
                       <li>
                       <li>
                         <a href="#errorPane" data-toggle="tab">
                         <a href="#errorPane" data-toggle="tab">
                         % if log:
                         % if log:
-                            Error Log
+                            ${_('Error Log')}
                         % else:
                         % else:
                             &nbsp;
                             &nbsp;
                         % endif
                         % endif
@@ -259,7 +260,7 @@ ${layout.menubar(section='query')}
 <div id="chooseFile" class="modal hide fade">
 <div id="chooseFile" class="modal hide fade">
     <div class="modal-header">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a file</h3>
+        <h3>${_('Choose a file')}</h3>
     </div>
     </div>
     <div class="modal-body">
     <div class="modal-body">
         <div id="filechooser">
         <div id="filechooser">
@@ -272,11 +273,11 @@ ${layout.menubar(section='query')}
 <div id="saveAs" class="modal hide fade">
 <div id="saveAs" class="modal hide fade">
     <div class="modal-header">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a name</h3>
+        <h3>${_('Choose a name')}</h3>
     </div>
     </div>
     <div class="modal-body">
     <div class="modal-body">
         <div class="clearfix">
         <div class="clearfix">
-            <label>Name</label>
+            <label>${_('Name')}</label>
             ${comps.field(form.saveform['name'])}
             ${comps.field(form.saveform['name'])}
         </div>
         </div>
         <div class="clearfix">
         <div class="clearfix">
@@ -285,7 +286,7 @@ ${layout.menubar(section='query')}
         </div>
         </div>
     </div>
     </div>
     <div class="modal-footer">
     <div class="modal-footer">
-        <button id="saveAsNameBtn" class="btn primary">Save</button>
+        <button id="saveAsNameBtn" class="btn primary">${_('Save')}</button>
     </div>
     </div>
 </div>
 </div>
 
 

+ 5 - 4
apps/beeswax/src/beeswax/templates/explain.mako

@@ -15,19 +15,20 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Query Explanation", "beeswax", "100px")}
+${commonheader(_('Query Explanation'), "beeswax", "100px")}
 ${layout.menubar(section='saved queries')}
 ${layout.menubar(section='saved queries')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-    <h1>Query Explanation: ${util.render_query_context(query_context)}</h1>
+    <h1>${_('Query Explanation:')} ${util.render_query_context(query_context)}</h1>
 
 
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
-        <li class="active"><a href="#explanation" data-toggle="tab">Explanation</a></li>
-        <li><a href="#query" data-toggle="tab">Query</a></li>
+        <li class="active"><a href="#explanation" data-toggle="tab">${_('Explanation')}</a></li>
+        <li><a href="#query" data-toggle="tab">${_('Query')}</a></li>
     </ul>
     </ul>
 
 
     <div class="tab-content">
     <div class="tab-content">

+ 23 - 22
apps/beeswax/src/beeswax/templates/index.mako

@@ -15,10 +15,11 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax", "beeswax", "100px")}
+${commonheader(_('Beeswax'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 <div class="container-fluid">
 <div class="container-fluid">
     <div class="row-fluid">
     <div class="row-fluid">
@@ -26,28 +27,28 @@ ${layout.menubar(section='tables')}
             <div class="well sidebar-nav">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                 <ul class="nav nav-list">
                     % if not examples_installed:
                     % if not examples_installed:
-                    <li class="nav-header">Examples</li>
-                    <li><a href="#installSamples" data-toggle="modal">Install Samples</a></li>
+                    <li class="nav-header">${_('Examples')}</li>
+                    <li><a href="#installSamples" data-toggle="modal">${_('Install Samples')}</a></li>
                     % endif
                     % endif
-                    <li class="nav-header">Tables</li>
-                    <li><a href="${ url('beeswax.views.show_tables') }">Show Tables</a></li>
-                    <li><a href="${ url('beeswax.create_table.create_table') }">Create Table</a></li>
-                    <li class="nav-header">Queries</li>
-                    <li><a href="${ url('beeswax.views.list_designs') }">Saved Queries</a></li>
-                    <li><a href="${ url('beeswax.views.execute_query') }">Execute Query</a></li>
-                    <li><a href="${ url('beeswax.views.edit_report') }">Report Generator</a></li>
-                    <li><a href="${ url('beeswax.views.list_query_history') }">Query History</a></li>
-                    <li class="nav-header">Configuration</li>
-                    <li><a href="${ url('beeswax.views.configuration') }">Hive Configuration</a></li>
-                    <li><a href="${ url('beeswax.views.configuration') }?include_hadoop=1">Extended Configuration</a></li>
+                    <li class="nav-header">${_('Tables')}</li>
+                    <li><a href="${ url('beeswax.views.show_tables') }">${_('Show Tables')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.create_table') }">${_('Create Table')}</a></li>
+                    <li class="nav-header">${_('Queries')}</li>
+                    <li><a href="${ url('beeswax.views.list_designs') }">${_('Saved Queries')}</a></li>
+                    <li><a href="${ url('beeswax.views.execute_query') }">${_('Execute Query')}</a></li>
+                    <li><a href="${ url('beeswax.views.edit_report') }">${_('Report Generator')}</a></li>
+                    <li><a href="${ url('beeswax.views.list_query_history') }">${_('Query History')}</a></li>
+                    <li class="nav-header">${_('Configuration')}</li>
+                    <li><a href="${ url('beeswax.views.configuration') }">${_('Hive Configuration')}</a></li>
+                    <li><a href="${ url('beeswax.views.configuration') }?include_hadoop=1">${_('Extended Configuration')}</a></li>
                 </ul>
                 </ul>
             </div>
             </div>
         </div>
         </div>
         <div class="span9">
         <div class="span9">
-            <h1>Welcome to Beeswax for Hive</h1>
-            To get started with Beeswax you'll first need set up some data:
-            <a href="${ url('beeswax.create_table.create_table') }" class='btn'>Import Data</a>
-            or <a href="#installSamples" data-toggle="modal" class='btn'>Install Samples</a>
+            <h1>${_('Welcome to Beeswax for Hive')}</h1>
+            ${_("To get started with Beeswax you'll first need set up some data:")}
+            <a href="${ url('beeswax.create_table.create_table') }" class='btn'>${_('Import Data')}</a>
+            or <a href="#installSamples" data-toggle="modal" class='btn'>${_('Install Samples')}</a>
         </div>
         </div>
     </div>
     </div>
 </div>
 </div>
@@ -55,14 +56,14 @@ ${layout.menubar(section='tables')}
 <div id="installSamples" class="modal hide fade">
 <div id="installSamples" class="modal hide fade">
     <div class="modal-header">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Install samples</h3>
+        <h3>${_('Install samples')}</h3>
     </div>
     </div>
     <div class="modal-body">
     <div class="modal-body">
       <div id="installSamplesMessage" class="alert"></div>
       <div id="installSamplesMessage" class="alert"></div>
     </div>
     </div>
     <div class="modal-footer">
     <div class="modal-footer">
-        <a href="#" id="installSamplesBtn" class="btn primary">Yes</a>
-        <a href="#" class="btn secondary" data-dismiss="modal">No</a>
+        <a href="#" id="installSamplesBtn" class="btn primary">${_('Yes')}</a>
+        <a href="#" class="btn secondary" data-dismiss="modal">${_('No')}</a>
     </div>
     </div>
 </div>
 </div>
 
 
@@ -82,7 +83,7 @@ ${layout.menubar(section='tables')}
                         window.location.href = "/beeswax/tables";
                         window.location.href = "/beeswax/tables";
                     }
                     }
                     else {
                     else {
-                        var message = "There was an error processing your request: " + result.message;
+                        var message = "${_('There was an error processing your request:')} " + result.message;
                         $("#installSamplesMessage").addClass("alert-error").text(message);
                         $("#installSamplesMessage").addClass("alert-error").text(message);
                     }
                     }
                 }
                 }

+ 8 - 6
apps/beeswax/src/beeswax/templates/layout.mako

@@ -18,6 +18,8 @@
 ## no spaces in this method please; we're declaring a CSS class, and ART uses this value for stuff, and it splits on spaces, and
 ## no spaces in this method please; we're declaring a CSS class, and ART uses this value for stuff, and it splits on spaces, and
 ## multiple spaces and line breaks cause issues
 ## multiple spaces and line breaks cause issues
 <%!
 <%!
+from django.utils.translation import ugettext as _
+
 def is_selected(section, matcher):
 def is_selected(section, matcher):
   if section == matcher:
   if section == matcher:
     return "active"
     return "active"
@@ -29,12 +31,12 @@ def is_selected(section, matcher):
 <div class="subnav subnav-fixed">
 <div class="subnav subnav-fixed">
 	<div class="container-fluid">
 	<div class="container-fluid">
 		<ul class="nav nav-pills">
 		<ul class="nav nav-pills">
-			<li class="${is_selected(section, 'query')}"><a href="/beeswax/execute">Query Editor</a></li>
-			<li class="${is_selected(section, 'my queries')}"><a href="/beeswax/my_queries">My Queries</a></li>
-			<li class="${is_selected(section, 'saved queries')}"><a href="/beeswax/list_designs">Saved Queries</a></li>
-			<li class="${is_selected(section, 'history')}"><a href="/beeswax/query_history">History</a></li>
-			<li class="${is_selected(section, 'tables')}"><a href="/beeswax/tables">Tables</a></li>
-			<li class="${is_selected(section, 'hive configuration')}"><a href="/beeswax/configuration">Settings</a></li>
+			<li class="${is_selected(section, 'query')}"><a href="/beeswax/execute">${_('Query Editor')}</a></li>
+			<li class="${is_selected(section, 'my queries')}"><a href="/beeswax/my_queries">${_('My Queries')}</a></li>
+			<li class="${is_selected(section, 'saved queries')}"><a href="/beeswax/list_designs">${_('Saved Queries')}</a></li>
+			<li class="${is_selected(section, 'history')}"><a href="/beeswax/query_history">${_('History')}</a></li>
+			<li class="${is_selected(section, 'tables')}"><a href="/beeswax/tables">${_('Tables')}</a></li>
+			<li class="${is_selected(section, 'hive configuration')}"><a href="/beeswax/configuration">${_('Settings')}</a></li>
 		</ul>
 		</ul>
 	</div>
 	</div>
 </div>
 </div>

+ 19 - 18
apps/beeswax/src/beeswax/templates/list_designs.mako

@@ -17,21 +17,22 @@
     import time
     import time
     from django.template.defaultfilters import timesince
     from django.template.defaultfilters import timesince
     from desktop.views import commonheader, commonfooter
     from desktop.views import commonheader, commonfooter
+    from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Queries", "beeswax", "100px")}
+${commonheader(_('Beeswax: Queries'), "beeswax", "100px")}
 ${layout.menubar(section='saved queries')}
 ${layout.menubar(section='saved queries')}
 <div class="container-fluid">
 <div class="container-fluid">
-    <h1>Beeswax: Queries</h1>
+    <h1>${_('Beeswax: Queries')}</h1>
     <table class="table table-striped table-condensed datatables">
     <table class="table table-striped table-condensed datatables">
         <thead>
         <thead>
         <tr>
         <tr>
-            <th>Name</th>
-            <th>Description</th>
-            <th>Owner</th>
-            <th>Type</th>
-            <th>Last Modified</th>
+            <th>${_('Name')}</th>
+            <th>${_('Description')}</th>
+            <th>${_('Owner')}</th>
+            <th>${_('Type')}</th>
+            <th>${_('Last Modified')}</th>
             <th></th>
             <th></th>
         </tr>
         </tr>
         </thead>
         </thead>
@@ -63,13 +64,13 @@ ${layout.menubar(section='saved queries')}
                     <td>${design.owner.username}</td>
                     <td>${design.owner.username}</td>
                 <td>
                 <td>
                     % if design.type == models.SavedQuery.REPORT:
                     % if design.type == models.SavedQuery.REPORT:
-                        Report
+                        ${_('Report')}
                     % else:
                     % else:
-                        Query
+                        ${_('Query')}
                     % endif
                     % endif
                 </td>
                 </td>
                     <td>
                     <td>
-                        <span alt="${time.mktime(design.mtime.timetuple())}">${ timesince(design.mtime) } ago</span>
+                        <span alt="${time.mktime(design.mtime.timetuple())}">${ timesince(design.mtime) } ${_('ago')}</span>
                     </td>
                     </td>
                 <td>
                 <td>
                 <div class="btn-group">
                 <div class="btn-group">
@@ -81,15 +82,15 @@ ${layout.menubar(section='saved queries')}
 
 
                 % if may_edit:
                 % if may_edit:
                     % if design.type == models.SavedQuery.REPORT:
                     % if design.type == models.SavedQuery.REPORT:
-                            <li><a href="${ url('beeswax.views.edit_report', design_id=design.id) }" title="Edit this report." class="contextItem">Edit</a></li>
+                            <li><a href="${ url('beeswax.views.edit_report', design_id=design.id) }" title="${_('Edit this report.')}" class="contextItem">${_('Edit')}</a></li>
                     % else:
                     % else:
-                            <li><a href="${ url('beeswax.views.execute_query', design_id=design.id) }" title="Edit this query." class="contextItem">Edit</a></li>
+                            <li><a href="${ url('beeswax.views.execute_query', design_id=design.id) }" title="${_('Edit this query.')}" class="contextItem">${_('Edit')}</a></li>
                     % endif
                     % endif
-                        <li><a href="javascript:void(0)" data-confirmation-url="${ url('beeswax.views.delete_design', design_id=design.id) }" title="Delete this query." class="contextItem confirmationModal">Delete</a></li>
-                        <li><a href="${ url('beeswax.views.list_query_history') }?design_id=${design.id}" title="View the usage history of this query." class="contextItem">Usage History</a></li>
+                        <li><a href="javascript:void(0)" data-confirmation-url="${ url('beeswax.views.delete_design', design_id=design.id) }" title="${_('Delete this query.')}" class="contextItem confirmationModal">${_('Delete')}</a></li>
+                        <li><a href="${ url('beeswax.views.list_query_history') }?design_id=${design.id}" title="${_('View the usage history of this query.')}" class="contextItem">${_('Usage History')}</a></li>
 
 
                 % endif
                 % endif
-                    <li><a href="${ url('beeswax.views.clone_design', design_id=design.id) }" title="Copy this query." class="contextItem">Clone</a></li>
+                    <li><a href="${ url('beeswax.views.clone_design', design_id=design.id) }" title="${_('Copy this query.')}" class="contextItem">${_('Clone')}</a></li>
                 </ul>
                 </ul>
                 </div>
                 </div>
 
 
@@ -106,11 +107,11 @@ ${layout.menubar(section='saved queries')}
     <form id="deleteQueryForm" action="" method="POST">
     <form id="deleteQueryForm" action="" method="POST">
         <div class="modal-header">
         <div class="modal-header">
             <a href="#" class="close" data-dismiss="modal">&times;</a>
             <a href="#" class="close" data-dismiss="modal">&times;</a>
-            <h3 id="deleteQueryMessage">Confirm action</h3>
+            <h3 id="deleteQueryMessage">${_('Confirm action')}</h3>
         </div>
         </div>
         <div class="modal-footer">
         <div class="modal-footer">
-            <input type="submit" class="btn primary" value="Yes"/>
-            <a href="#" class="btn secondary" data-dismiss="modal">No</a>
+            <input type="submit" class="btn primary" value="${_('Yes')}"/>
+            <a href="#" class="btn secondary" data-dismiss="modal">${_('No')}</a>
         </div>
         </div>
     </form>
     </form>
 </div>
 </div>

+ 20 - 19
apps/beeswax/src/beeswax/templates/list_history.mako

@@ -16,23 +16,24 @@
 <%!
 <%!
 import time
 import time
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%!  from beeswax.views import collapse_whitespace %>
 <%!  from beeswax.views import collapse_whitespace %>
-${commonheader("Beeswax: Query History", "beeswax", "100px")}
+${commonheader(_('Beeswax: Query History'), "beeswax", "100px")}
 ${layout.menubar(section='history')}
 ${layout.menubar(section='history')}
 <%def name="show_saved_query(design, history)">
 <%def name="show_saved_query(design, history)">
   % if design:
   % if design:
     % if request.user == design.owner:
     % if request.user == design.owner:
       % if design.type == models.SavedQuery.REPORT:
       % if design.type == models.SavedQuery.REPORT:
-        <a href="${ url('beeswax.views.edit_report', design_id=design.id) }" class="bw-view_query">
+        <a href="${ url('beeswax.views.edit_report', design_id=design.id) }">
       % else:
       % else:
-        <a href="${ url('beeswax.views.execute_query', design_id=design.id) }" class="bw-view_query">
+        <a href="${ url('beeswax.views.execute_query', design_id=design.id) }">
       % endif
       % endif
     % endif
     % endif
     % if design.is_auto:
     % if design.is_auto:
-      [ Unsaved ]
+      [ ${_('Unsaved')} ]
     % else:
     % else:
       ${design.name}
       ${design.name}
     % endif
     % endif
@@ -40,33 +41,33 @@ ${layout.menubar(section='history')}
     </a>
     </a>
     % else:
     % else:
     ## TODO (bc/nutron): Shouldn't be able to edit someone else's design. Let user clone instead.
     ## TODO (bc/nutron): Shouldn't be able to edit someone else's design. Let user clone instead.
-    <a href="${ url('beeswax.views.clone_design', design_id=design.id) }" title="Copy this query.">Clone</a>
+    <a href="${ url('beeswax.views.clone_design', design_id=design.id) }" title="${_('Copy this query.')}">${_('Clone')}</a>
     % endif
     % endif
   % else:
   % else:
-    [ Auto generated action ]
+    [ ${_('Auto generated action')} ]
   % endif
   % endif
 </%def>
 </%def>
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-	<h1>Beeswax: Query History</h1>
+	<h1>${_('Beeswax: Query History')}</h1>
 	<div class="row-fluid">
 	<div class="row-fluid">
 		<div class="span3">
 		<div class="span3">
 			<div class="well sidebar-nav">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 				<ul class="nav nav-list">
-					<li class="nav-header">Actions</li>
+					<li class="nav-header">${_('Actions')}</li>
                     % if share_queries:
                     % if share_queries:
                         % if filter_params.get('user') == ':all':
                         % if filter_params.get('user') == ':all':
                           <%
                           <%
                             my_querydict = filter_params.copy()
                             my_querydict = filter_params.copy()
                             my_querydict['user'] = request.user.username
                             my_querydict['user'] = request.user.username
                           %>
                           %>
-                        <li><a href="?${my_querydict.urlencode()}">Show my queries</a></li>
+                        <li><a href="?${my_querydict.urlencode()}">${_('Show my queries')}</a></li>
                         % else:
                         % else:
                           <%
                           <%
                             my_querydict = filter_params.copy()
                             my_querydict = filter_params.copy()
                             my_querydict['user'] = ':all'
                             my_querydict['user'] = ':all'
                           %>
                           %>
-                          <li><a href="?${my_querydict.urlencode()}">Show everyone's queries</a></li>
+                          <li><a href="?${my_querydict.urlencode()}">${_("Show everyone's queries")}</a></li>
                         % endif
                         % endif
                     % endif
                     % endif
 
 
@@ -75,13 +76,13 @@ ${layout.menubar(section='history')}
 				        my_querydict = filter_params.copy()
 				        my_querydict = filter_params.copy()
 				        my_querydict['auto_query'] = ''
 				        my_querydict['auto_query'] = ''
 				      %>
 				      %>
-				      <li><a href="?${my_querydict.urlencode()}">Show user queries</a></li>
+				      <li><a href="?${my_querydict.urlencode()}">${_('Show user queries')}</a></li>
 				    % else:
 				    % else:
 				      <%
 				      <%
 				        my_querydict = filter_params.copy()
 				        my_querydict = filter_params.copy()
 				        my_querydict['auto_query'] = 'on'
 				        my_querydict['auto_query'] = 'on'
 				      %>
 				      %>
-				      <li><a href="?${my_querydict.urlencode()}">Show auto actions</a></li>
+				      <li><a href="?${my_querydict.urlencode()}">${_('Show auto actions')}</a></li>
 				    % endif
 				    % endif
 				</ul>
 				</ul>
 			</div>
 			</div>
@@ -91,12 +92,12 @@ ${layout.menubar(section='history')}
 		<table class="table table-striped table-condensed datatables">
 		<table class="table table-striped table-condensed datatables">
 		    <thead>
 		    <thead>
 		      <tr>
 		      <tr>
-		        <th>Time</th>
-		        <th>Name</th>
-		        <th>Query</th>
-		        <th>User</th>
-		        <th>State</th>
-		        <th>Result</th>
+		        <th>${_('Time')}</th>
+		        <th>${_('Name')}</th>
+		        <th>${_('Query')}</th>
+		        <th>${_('User')}</th>
+		        <th>${_('State')}</th>
+		        <th>${_('Result')}</th>
 		      </tr>
 		      </tr>
 		    </thead>
 		    </thead>
 		    <tbody>
 		    <tbody>
@@ -128,7 +129,7 @@ ${layout.menubar(section='history')}
 		        <td>${models.QueryHistory.STATE[query.last_state]}</td>
 		        <td>${models.QueryHistory.STATE[query.last_state]}</td>
 		        <td>
 		        <td>
 		          % if qcontext and query.last_state != models.QueryHistory.STATE.expired.index:
 		          % if qcontext and query.last_state != models.QueryHistory.STATE.expired.index:
-		            <a href="${ url('beeswax.views.watch_query', id=query.id) }?context=${qcontext|u}" data-row-selector="true">Results</a>
+		            <a href="${ url('beeswax.views.watch_query', id=query.id) }?context=${qcontext|u}" data-row-selector="true">${_('Results')}</a>
 		          % else:
 		          % else:
 		            ~
 		            ~
 		          % endif
 		          % endif

+ 5 - 5
apps/beeswax/src/beeswax/templates/load_table.mako

@@ -15,18 +15,19 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Load Data into " + table, "beeswax", "100px")}
+${commonheader(_('Beeswax: Load Data into %(table)s') % dict(table=table), "beeswax", "100px")}
 ${layout.menubar()}
 ${layout.menubar()}
 <div class="container-fluid">
 <div class="container-fluid">
-  <h1>Load Data into <tt>${table}</tt></h1>
+  <h1>${_('Load Data into %(table)s') % dict(table=table)}</h1>
   <div class="prompt_popup">
   <div class="prompt_popup">
     <form action="${action}" method="POST">
     <form action="${action}" method="POST">
       <dl>
       <dl>
         ${util.render_field(form["path"])}
         ${util.render_field(form["path"])}
-        <a class="hue-chooseFile" data-filters="ArtButton" data-icon-styles="{'width': 16, 'height': 16, 'top': 6, 'left': 6 }" data-chooseFor="path">Open File Chooser </a>
+        <a class="hue-chooseFile" data-filters="ArtButton" data-icon-styles="{'width': 16, 'height': 16, 'top': 6, 'left': 6 }" data-chooseFor="path">${_('Open File Chooser')} </a>
         ## Path (on HDFS) of files to load.
         ## Path (on HDFS) of files to load.
         ${util.render_field(form["overwrite"])}
         ${util.render_field(form["overwrite"])}
         ## Any existing data will be erased!
         ## Any existing data will be erased!
@@ -38,8 +39,7 @@ ${layout.menubar()}
         ## this data corresponds to.
         ## this data corresponds to.
       </dl>
       </dl>
       <p>
       <p>
-      Note that loading data will move data from its location
-      into the table's storage location.
+          ${_("Note that loading data will move data from its location into the table's storage location.")}
       </p>
       </p>
       <input type="submit">
       <input type="submit">
     </form>
     </form>

+ 31 - 30
apps/beeswax/src/beeswax/templates/my_queries.mako

@@ -17,11 +17,12 @@
 import time
 import time
 from django.template.defaultfilters import timesince
 from django.template.defaultfilters import timesince
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%!  from beeswax.views import collapse_whitespace %>
 <%!  from beeswax.views import collapse_whitespace %>
-${commonheader("Beeswax: My Queries", "beeswax", "100px")}
+${commonheader(_('Beeswax: My Queries'), "beeswax", "100px")}
 ${layout.menubar(section='my queries')}
 ${layout.menubar(section='my queries')}
 <style>
 <style>
     .tab-content {
     .tab-content {
@@ -29,21 +30,21 @@ ${layout.menubar(section='my queries')}
     }
     }
 </style>
 </style>
 <div class="container-fluid">
 <div class="container-fluid">
-    <h1>Beeswax: My Queries</h1>
+    <h1>${_('Beeswax: My Queries')}</h1>
 
 
     <div class="well hueWell">
     <div class="well hueWell">
         <div class="btn-group pull-right">
         <div class="btn-group pull-right">
-            <a class="btn" href="/beeswax/">Create New Query</a>
+            <a class="btn" href="/beeswax/">${_('Create New Query')}</a>
         </div>
         </div>
 
 
         <form class="form-search">
         <form class="form-search">
-            Filter: <input placeholder="Search for name, description, etc..." class="input-xlarge search-query" id="filterInput">
+            ${_('Filter:')} <input placeholder="${_('Search for name, description, etc...')}" class="input-xlarge search-query" id="filterInput">
         </form>
         </form>
     </div>
     </div>
 
 
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
-        <li class="active"><a href="#recentSavedQueries" data-toggle="tab">Recent Saved Queries &nbsp;<span id="recentSavedQueriesFilterCnt" class="badge badge-info hide"></span></a></li>
-        <li><a href="#recentRunQueries" data-toggle="tab">Recent Run Queries  &nbsp;<span id="recentRunQueriesFilterCnt" class="badge badge-info hide"></span></a></li>
+        <li class="active"><a href="#recentSavedQueries" data-toggle="tab">${_('Recent Saved Queries')} &nbsp;<span id="recentSavedQueriesFilterCnt" class="badge badge-info hide"></span></a></li>
+        <li><a href="#recentRunQueries" data-toggle="tab">${_('Recent Run Queries')}  &nbsp;<span id="recentRunQueriesFilterCnt" class="badge badge-info hide"></span></a></li>
     </ul>
     </ul>
 
 
     <div class="tab-content">
     <div class="tab-content">
@@ -52,10 +53,10 @@ ${layout.menubar(section='my queries')}
                  <table id="recentSavedQueriesTable" class="table table-striped table-condensed datatables">
                  <table id="recentSavedQueriesTable" class="table table-striped table-condensed datatables">
                       <thead>
                       <thead>
                         <tr>
                         <tr>
-                          <th>Name</th>
-                          <th>Desc</th>
-                          <th>Type</th>
-                          <th>Last Modified</th>
+                          <th>${_('Name')}</th>
+                          <th>${_('Desc')}</th>
+                          <th>${_('Type')}</th>
+                          <th>${_('Last Modified')}</th>
                           <th></th>
                           <th></th>
                         </tr>
                         </tr>
                       </thead>
                       </thead>
@@ -79,29 +80,29 @@ ${layout.menubar(section='my queries')}
                           </td>
                           </td>
                           <td>
                           <td>
                             % if design.type == models.SavedQuery.REPORT:
                             % if design.type == models.SavedQuery.REPORT:
-                              Report
+                              ${_('Report')}
                             % else:
                             % else:
-                              Query
+                              ${_('Query')}
                             % endif
                             % endif
                           </td>
                           </td>
                           <td>
                           <td>
-                              <span alt="${time.mktime(design.mtime.timetuple())}">${ timesince(design.mtime) } ago</span>
+                              <span alt="${time.mktime(design.mtime.timetuple())}">${ timesince(design.mtime) } ${_('ago')}</span>
                           </td>
                           </td>
                           <td>
                           <td>
                             <div class="btn-group">
                             <div class="btn-group">
                                 <a href="#" data-toggle="dropdown" class="btn dropdown-toggle">
                                 <a href="#" data-toggle="dropdown" class="btn dropdown-toggle">
-                                       Options
+                                    ${_('Options')}
                                     <span class="caret"></span>
                                     <span class="caret"></span>
                                 </a>
                                 </a>
                                 <ul class="dropdown-menu">
                                 <ul class="dropdown-menu">
                                       % if design.type == models.SavedQuery.REPORT:
                                       % if design.type == models.SavedQuery.REPORT:
-                                        <li><a href="${ url('beeswax.views.edit_report', design_id=design.id) }" title="Edit this report." class="contextItem">Edit</a></li>
+                                        <li><a href="${ url('beeswax.views.edit_report', design_id=design.id) }" title="${_('Edit this report.')}" class="contextItem">${_('Edit')}</a></li>
                                       % else:
                                       % else:
-                                        <li><a href="${ url('beeswax.views.execute_query', design_id=design.id) }" title="Edit this query." class="contextItem">Edit</a></li>
+                                        <li><a href="${ url('beeswax.views.execute_query', design_id=design.id) }" title="${_('Edit this query.')}" class="contextItem">${_('Edit')}</a></li>
                                       % endif
                                       % endif
-                                         <li><a href="javascript:void(0)" data-confirmation-url="${ url('beeswax.views.delete_design', design_id=design.id) }" title="Delete this query." class="contextItem confirmationModal">Delete</a></li>
-                                      <li><a href="${ url('beeswax.views.list_query_history') }?design_id=${design.id}" title="View the usage history of this query." class="contextItem">Usage History</a></li>
-                                      <li><a href="${ url('beeswax.views.clone_design', design_id=design.id) }" title="Copy this query." class="contextItem">Clone</a></li>
+                                         <li><a href="javascript:void(0)" data-confirmation-url="${ url('beeswax.views.delete_design', design_id=design.id) }" title="${_('Delete this query.')}" class="contextItem confirmationModal">${_('Delete')}</a></li>
+                                      <li><a href="${ url('beeswax.views.list_query_history') }?design_id=${design.id}" title="${_('View the usage history of this query.')}" class="contextItem">${_('Usage History')}</a></li>
+                                      <li><a href="${ url('beeswax.views.clone_design', design_id=design.id) }" title="${_('Copy this query.')}" class="contextItem">${_('Clone')}</a></li>
                                 </ul>
                                 </ul>
                             </div>
                             </div>
                           </td>
                           </td>
@@ -110,7 +111,7 @@ ${layout.menubar(section='my queries')}
                       </tbody>
                       </tbody>
                     </table>
                     </table>
                     % if q_page.number != q_page.num_pages():
                     % if q_page.number != q_page.num_pages():
-                      <a href="${ url('beeswax.views.list_designs') }?user=${request.user.username|u}" >View all my queries &raquo;</a>
+                      <a href="${ url('beeswax.views.list_designs') }?user=${request.user.username|u}" >${_('View all my queries')} &raquo;</a>
                     % endif
                     % endif
             </div>
             </div>
 
 
@@ -118,11 +119,11 @@ ${layout.menubar(section='my queries')}
                 <table id="recentRunQueriesTable" class="table table-striped table-condensed datatables">
                 <table id="recentRunQueriesTable" class="table table-striped table-condensed datatables">
                   <thead>
                   <thead>
                     <tr>
                     <tr>
-                      <th>Time</th>
-                      <th>Name</th>
-                      <th>Query</th>
-                      <th>State</th>
-                      <th>Result</th>
+                      <th>${_('Time')}</th>
+                      <th>${_('Name')}</th>
+                      <th>${_('Query')}</th>
+                      <th>${_('State')}</th>
+                      <th>${_('Result')}</th>
                     </tr>
                     </tr>
                   </thead>
                   </thead>
                   <tbody>
                   <tbody>
@@ -154,7 +155,7 @@ ${layout.menubar(section='my queries')}
                       <td>${models.QueryHistory.STATE[query.last_state]}</td>
                       <td>${models.QueryHistory.STATE[query.last_state]}</td>
                       <td>
                       <td>
                         % if qcontext and query.last_state != models.QueryHistory.STATE.expired.index:
                         % if qcontext and query.last_state != models.QueryHistory.STATE.expired.index:
-                          <a href="${ url('beeswax.views.watch_query', id=query.id) }?context=${qcontext|u}">View</a>
+                          <a href="${ url('beeswax.views.watch_query', id=query.id) }?context=${qcontext|u}">${_('View')}</a>
                         % else:
                         % else:
                           ~
                           ~
                         % endif
                         % endif
@@ -164,7 +165,7 @@ ${layout.menubar(section='my queries')}
                   </tbody>
                   </tbody>
                 </table>
                 </table>
                 % if h_page.number != h_page.num_pages():
                 % if h_page.number != h_page.num_pages():
-                  <a href="${ url('beeswax.views.list_query_history') }">View my entire query history &raquo;</a>
+                  <a href="${ url('beeswax.views.list_query_history') }">${_('View my entire query history')} &raquo;</a>
                 % endif
                 % endif
             </div>
             </div>
     </div>
     </div>
@@ -174,11 +175,11 @@ ${layout.menubar(section='my queries')}
     <form id="deleteQueryForm" action="" method="POST">
     <form id="deleteQueryForm" action="" method="POST">
     <div class="modal-header">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3 id="deleteQueryMessage">Confirm action</h3>
+        <h3 id="deleteQueryMessage">${_('Confirm action')}</h3>
     </div>
     </div>
     <div class="modal-footer">
     <div class="modal-footer">
-        <input type="submit" class="btn primary" value="Yes"/>
-        <a href="#" class="btn secondary" data-dismiss="modal">No</a>
+        <input type="submit" class="btn primary" value="${_('Yes')}"/>
+        <a href="#" class="btn secondary" data-dismiss="modal">${_('No')}</a>
     </div>
     </div>
     </form>
     </form>
 </div>
 </div>

+ 6 - 5
apps/beeswax/src/beeswax/templates/parameterization.mako

@@ -15,11 +15,12 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 
 
-${commonheader("Parameterize Hive Query", "beeswax", "100px")}
+${commonheader(_('Parametrize Hive Query'), "beeswax", "100px")}
 
 
 ${layout.menubar()}
 ${layout.menubar()}
 
 
@@ -27,14 +28,14 @@ ${layout.menubar()}
     <%
     <%
         if explain:
         if explain:
             action = url('beeswax.views.explain_parameterized_query', design.id)
             action = url('beeswax.views.explain_parameterized_query', design.id)
-            btn = "Explain query"
+            btn = _("Explain query")
         else:
         else:
             action = url('beeswax.views.execute_parameterized_query', design.id)
             action = url('beeswax.views.execute_parameterized_query', design.id)
-            btn = "Execute query"
+            btn = _("Execute query")
     %>
     %>
     <form method="POST" action="${action}" class="form-horizontal">
     <form method="POST" action="${action}" class="form-horizontal">
         <fieldset>
         <fieldset>
-            <legend>Please specify parameters for this query:</legend>
+            <legend>${_('Please specify parameters for this query:')}</legend>
             % for field in form:
             % for field in form:
                 <div class="control-group">
                 <div class="control-group">
                     <label class="control-label">${comps.bootstrapLabel(field)}</label>
                     <label class="control-label">${comps.bootstrapLabel(field)}</label>
@@ -45,7 +46,7 @@ ${layout.menubar()}
             % endfor
             % endfor
             <div class="form-actions">
             <div class="form-actions">
                 <button type="submit" class="btn btn-primary">${btn}</button>
                 <button type="submit" class="btn btn-primary">${btn}</button>
-                <a class="btn" href="javascript:history.go(-1);">Cancel</a>
+                <a class="btn" href="javascript:history.go(-1);">${_('Cancel')}</a>
             </div>
             </div>
         </fieldset>
         </fieldset>
     </form>
     </form>

+ 11 - 10
apps/beeswax/src/beeswax/templates/report_gen.mako

@@ -15,29 +15,30 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Query Constructor", "beeswax", "100px")}
+${commonheader(_('Beeswax: Query Constructor'), "beeswax", "100px")}
 ${layout.menubar(section='report generator')}
 ${layout.menubar(section='report generator')}
 <div class="container-fluid">
 <div class="container-fluid">
-<h1>Report Generator</h1>
+<h1>${_('Report Generator')}</h1>
 % if design and not design.is_auto and design.name:
 % if design and not design.is_auto and design.name:
-<b>Working on saved query: ${design.name}</b>
+<b>${_('Working on saved query:')} ${design.name}</b>
 % endif
 % endif
 
 
 % if error_message:
 % if error_message:
-Error: <b>${error_message}</b>
+${_('Error:')} <b>${error_message}</b>
 % endif
 % endif
 % if log:
 % if log:
 ## The log should probably be in another tab
 ## The log should probably be in another tab
-<p><a href="#log">View logs</a><p/>
+<p><a href="#log">${_('View logs')}</a><p/>
 % endif
 % endif
 
 
 <form action="${action}" method="POST">
 <form action="${action}" method="POST">
 
 
     ## columns management form
     ## columns management form
-    Add column:
+    ${_('Add column:')}
     ${unicode(mform.columns.management_form) | n}
     ${unicode(mform.columns.management_form) | n}
 
 
     ## colums formset errors
     ## colums formset errors
@@ -59,7 +60,7 @@ Error: <b>${error_message}</b>
     <br/>
     <br/>
 
 
     ## conditions
     ## conditions
-    <h2>Conditions</h2>
+    <h2>${_('Conditions')}</h2>
     <%def name="render_conds_formset(formset)">
     <%def name="render_conds_formset(formset)">
       % for form in formset.forms:
       % for form in formset.forms:
 	<table>
 	<table>
@@ -102,8 +103,8 @@ Error: <b>${error_message}</b>
     ${render_union_mform(mform.union, 0)}
     ${render_union_mform(mform.union, 0)}
 
 
     <hr/>
     <hr/>
-    <input type="submit" name="button-submit" value="Submit"/>
-    <input type="submit" name="button-advanced" value="Advanced ..."/>
+    <input type="submit" name="button-submit" value="${_('Submit')}"/>
+    <input type="submit" name="button-advanced" value="${_('Advanced ...')}"/>
     <br/>
     <br/>
 
 
     ## design info
     ## design info
@@ -112,7 +113,7 @@ Error: <b>${error_message}</b>
 
 
 % if log:
 % if log:
 <br/>
 <br/>
-<a name="log"><h3>Server Log</h3></a>
+<a name="log"><h3>${_('Server Log')}</h3></a>
 <pre>
 <pre>
 ${log | h}
 ${log | h}
 </pre>
 </pre>

+ 8 - 7
apps/beeswax/src/beeswax/templates/save_results.mako

@@ -15,32 +15,33 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Create table from file", "beeswax", "100px")}
+${commonheader(_('Beeswax: Create table from file'), "beeswax", "100px")}
 ${layout.menubar(section='history')}
 ${layout.menubar(section='history')}
 <div class="container-fluid">
 <div class="container-fluid">
 % if error_msg:
 % if error_msg:
 <h4>${error_msg}</h4>
 <h4>${error_msg}</h4>
 % endif
 % endif
-<h1>Save Query Results</h1>
+<h1>${_('Save Query Results')}</h1>
 <form id="saveForm" action="${action}" method="POST" class="form form-inline">
 <form id="saveForm" action="${action}" method="POST" class="form form-inline">
 	<label class="radio">
 	<label class="radio">
 		<input id="id_save_target_0" type="radio" name="save_target" value="to a new table" checked="checked"/>
 		<input id="id_save_target_0" type="radio" name="save_target" value="to a new table" checked="checked"/>
-		&nbsp;In a new table
+		&nbsp;${_('In a new table')}
 	</label>
 	</label>
 	${comps.field(form['target_table'], notitle=True, placeholder="Table Name")}
 	${comps.field(form['target_table'], notitle=True, placeholder="Table Name")}
 	<br/>
 	<br/>
 	<label class="radio">
 	<label class="radio">
 		<input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
 		<input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
-		&nbsp;In an HDFS directory
+		&nbsp;${_('In an HDFS directory')}
 	</label>
 	</label>
-	${comps.field(form['target_dir'], notitle=True, hidden=True, placeholder="Results location")}
+	${comps.field(form['target_dir'], notitle=True, hidden=True, placeholder=_('Results location'))}
   <br/><br/>
   <br/><br/>
-  <input type="submit" name="save" value="Save" class="btn primary"/>
-  <input type="submit" name="cancel" value="Cancel" class="btn"/>
+  <input type="submit" name="save" value="${_('Save')}" class="btn primary"/>
+  <input type="submit" name="cancel" value="${_('Cancel')}" class="btn"/>
 </form>
 </form>
 </div>
 </div>
 
 

+ 13 - 12
apps/beeswax/src/beeswax/templates/show_tables.mako

@@ -15,23 +15,24 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Table List", "beeswax", "100px")}
+${commonheader(_('Beeswax: Table List'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 ${layout.menubar(section='tables')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-	<h1>Beeswax: Table List</h1>
+	<h1>${_('Beeswax: Table List')}</h1>
 	<div class="row-fluid">
 	<div class="row-fluid">
 		<div class="span3">
 		<div class="span3">
 			<div class="well sidebar-nav">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 				<ul class="nav nav-list">
-					<li class="nav-header">Actions</li>
+					<li class="nav-header">${_('Actions')}</li>
 					% if not examples_installed:
 					% if not examples_installed:
-		        	<li><a href="#installSamples" data-toggle="modal">Install samples</a></li>
+		        	<li><a href="#installSamples" data-toggle="modal">${_('Install samples')}</a></li>
 		      		% endif
 		      		% endif
-		      		<li><a href="${ url('beeswax.create_table.import_wizard')}">Create a new table from file</a></li>
-					<li><a href="${ url('beeswax.create_table.create_table')}">Create a new table manually</a></li>
+		      		<li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+					<li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
 				</ul>
 				</ul>
 			</div>
 			</div>
 		</div>
 		</div>
@@ -39,7 +40,7 @@ ${layout.menubar(section='tables')}
 			<table class="table table-condensed table-striped datatables">
 			<table class="table table-condensed table-striped datatables">
 				<thead>
 				<thead>
 					<tr>
 					<tr>
-						<th>Table Name</th>
+						<th>${_('Table Name')}</th>
 						<th>&nbsp;</th>
 						<th>&nbsp;</th>
 					</tr>
 					</tr>
 				</thead>
 				</thead>
@@ -49,7 +50,7 @@ ${layout.menubar(section='tables')}
 						<td>
 						<td>
 							<a href="${ url("beeswax.views.describe_table", table=table) }" data-row-selector="true">${ table }</a>
 							<a href="${ url("beeswax.views.describe_table", table=table) }" data-row-selector="true">${ table }</a>
 						</td>
 						</td>
-						<td><a href="${ url("beeswax.views.read_table", table=table) }" class="btn">Browse Data</a></td>
+						<td><a href="${ url("beeswax.views.read_table", table=table) }" class="btn">${_('Browse Data')}</a></td>
 					</tr>
 					</tr>
 				% endfor
 				% endfor
 				</tbody>
 				</tbody>
@@ -64,7 +65,7 @@ ${layout.menubar(section='tables')}
 <div id="installSamples" class="modal hide fade">
 <div id="installSamples" class="modal hide fade">
 	<div class="modal-header">
 	<div class="modal-header">
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
-		<h3>Install samples</h3>
+		<h3>${_('Install samples')}</h3>
 	</div>
 	</div>
 	<div class="modal-body">
 	<div class="modal-body">
 	  <div id="installSamplesMessage" class="alert">
 	  <div id="installSamplesMessage" class="alert">
@@ -72,8 +73,8 @@ ${layout.menubar(section='tables')}
 	  </div>
 	  </div>
 	</div>
 	</div>
 	<div class="modal-footer">
 	<div class="modal-footer">
-		<a href="#" id="installSamplesBtn" class="btn primary">Yes</a>
-		<a href="#" class="btn secondary" data-dismiss="modal">No</a>
+		<a href="#" id="installSamplesBtn" class="btn primary">${_('Yes')}</a>
+		<a href="#" class="btn secondary" data-dismiss="modal">${_('No')}</a>
 	</div>
 	</div>
 </div>
 </div>
 % endif
 % endif
@@ -107,7 +108,7 @@ ${layout.menubar(section='tables')}
                         window.location.href = "/beeswax/tables";
                         window.location.href = "/beeswax/tables";
                     }
                     }
                     else {
                     else {
-                        var message = "There was an error processing your request: " + result.message;
+                        var message = "${_('There was an error processing your request:')} " + result.message;
                         $("#installSamplesMessage").addClass("alert-error").text(message);
                         $("#installSamplesMessage").addClass("alert-error").text(message);
                     }
                     }
                 }
                 }

+ 7 - 4
apps/beeswax/src/beeswax/templates/util.mako

@@ -13,6 +13,9 @@
 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ## See the License for the specific language governing permissions and
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## limitations under the License.
+<%!
+from django.utils.translation import ugettext as _
+%>
 <%def name="render_error(err)">
 <%def name="render_error(err)">
   <div>
   <div>
     ${unicode(err) | n}
     ${unicode(err) | n}
@@ -56,16 +59,16 @@
   % if query_context:
   % if query_context:
     % if query_context[0] == 'table':
     % if query_context[0] == 'table':
       <% tablename = query_context[1] %>
       <% tablename = query_context[1] %>
-      <a href="${ url('beeswax.views.describe_table', tablename) }" class="bw-query_link">${tablename}</a>
+      <a href="${ url('beeswax.views.describe_table', tablename) }">${tablename}</a>
     % elif query_context[0] == 'design':
     % elif query_context[0] == 'design':
       <% design = query_context[1] %>
       <% design = query_context[1] %>
       % if design.is_auto:
       % if design.is_auto:
-		<a href="${ url('beeswax.views.execute_query', design.id)}" class="bw-query_link">Unsaved Query</a>
+		<a href="${ url('beeswax.views.execute_query', design.id)}">${_('Unsaved Query')}</a>
       % else:
       % else:
-        <a href="${ url('beeswax.views.execute_query', design.id)}" class="bw-query_link">${design.name}</a>
+        <a href="${ url('beeswax.views.execute_query', design.id)}">${design.name}</a>
       % endif
       % endif
     % else:
     % else:
-      Query Results
+      ${_('Query Results')}
     % endif
     % endif
   % endif
   % endif
 </%def>
 </%def>

+ 26 - 25
apps/beeswax/src/beeswax/templates/watch_results.mako

@@ -15,30 +15,31 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
-${commonheader("Beeswax: Query Results", "beeswax", "100px")}
+${commonheader(_('Beeswax: Query Results'), "beeswax", "100px")}
 ${layout.menubar(section='query')}
 ${layout.menubar(section='query')}
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-	<h1>Beeswax: Query Results: ${util.render_query_context(query_context)}</h1>
+	<h1>${_('Beeswax: Query Results:')} ${util.render_query_context(query_context)}</h1>
 	<div class="row-fluid">
 	<div class="row-fluid">
 		<div class="span3">
 		<div class="span3">
 			<div class="well sidebar-nav">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 				<ul class="nav nav-list">
 					% if download_urls:
 					% if download_urls:
-					<li class="nav-header">Downloads</li>
-					<li><a target="_blank" href="${download_urls["csv"]}">Download as CSV</a></li>
-					<li><a target="_blank" href="${download_urls["xls"]}">Download as XLS</a></li>
+					<li class="nav-header">${_('Downloads')}</li>
+					<li><a target="_blank" href="${download_urls["csv"]}">${_('Download as CSV')}</a></li>
+					<li><a target="_blank" href="${download_urls["xls"]}">${_('Download as XLS')}</a></li>
 					% endif
 					% endif
 					%if can_save:
 					%if can_save:
-					<li><a data-toggle="modal" href="#saveAs">Save</a></li>
+					<li><a data-toggle="modal" href="#saveAs">${_('Save')}</a></li>
 					% endif
 					% endif
 					<%
 					<%
 			          n_jobs = hadoop_jobs and len(hadoop_jobs) or 0
 			          n_jobs = hadoop_jobs and len(hadoop_jobs) or 0
-			          mr_jobs = (n_jobs == 1) and "MR Job" or "MR Jobs"
+			          mr_jobs = (n_jobs == 1) and _('MR Job') or _('MR Jobs')
 			        %>
 			        %>
 				 	% if n_jobs > 0:
 				 	% if n_jobs > 0:
 						<li class="nav-header">${mr_jobs} (${n_jobs})</li>
 						<li class="nav-header">${mr_jobs} (${n_jobs})</li>
@@ -48,7 +49,7 @@ ${layout.menubar(section='query')}
 						% endfor
 						% endfor
 					% else:
 					% else:
 						<li class="nav-header">${mr_jobs}</li>
 						<li class="nav-header">${mr_jobs}</li>
-						<li>No Hadoop jobs were launched in running this query.</li>
+						<li>${_('No Hadoop jobs were launched in running this query.')}</li>
 					% endif
 					% endif
 				</ul>
 				</ul>
 			</div>
 			</div>
@@ -57,25 +58,25 @@ ${layout.menubar(section='query')}
 				<ul class="nav nav-tabs">
 				<ul class="nav nav-tabs">
 					<li class="active"><a href="#results" data-toggle="tab">
 					<li class="active"><a href="#results" data-toggle="tab">
 		  			%if error:
 		  			%if error:
-			            Error
+			            ${_('Error')}
 					%else:
 					%else:
-						Results
+						${_('Results')}
 					%endif
 					%endif
 					</a></li>
 					</a></li>
-					<li><a href="#query" data-toggle="tab">Query</a></li>
-					<li><a href="#log" data-toggle="tab">Log</a></li>
+					<li><a href="#query" data-toggle="tab">${_('Query')}</a></li>
+					<li><a href="#log" data-toggle="tab">${_('Log')}</a></li>
 				</ul>
 				</ul>
 
 
 				<div class="tab-content">
 				<div class="tab-content">
 					<div class="active tab-pane" id="results">
 					<div class="active tab-pane" id="results">
 					% if error:
 					% if error:
 		            <div class="alert alert-error">
 		            <div class="alert alert-error">
-		              <h3>Error!</h3>
+		              <h3>${_('Error!')}</h3>
 		              <pre>${error_message | h}</pre>
 		              <pre>${error_message | h}</pre>
 		            </div>
 		            </div>
           			% else:
           			% else:
 		            % if expected_first_row != start_row:
 		            % if expected_first_row != start_row:
-		              <div class="alert"><strong>Warning:</strong> Page offset may have incremented since last view.</div>
+		              <div class="alert"><strong>${_('Warning:')}</strong> ${_('Page offset may have incremented since last view.')}</div>
 		            % endif
 		            % endif
             		<table class="table table-striped table-condensed resultTable" cellpadding="0" cellspacing="0">
             		<table class="table table-striped table-condensed resultTable" cellpadding="0" cellspacing="0">
 		              <thead>
 		              <thead>
@@ -100,12 +101,12 @@ ${layout.menubar(section='query')}
 					<div class="pagination pull-right">
 					<div class="pagination pull-right">
 				    	<ul>
 				    	<ul>
 							% if start_row != 0:
 							% if start_row != 0:
-				            <li><a href="${ url('beeswax.views.view_results', query.id, 0) }" title="Back to first row">Back to first row</a></li>
+				            <li><a href="${ url('beeswax.views.view_results', query.id, 0) }" title="${_('Back to first row')}">${_('Back to first row')}</a></li>
 							% else:
 							% else:
-							<li class="active"><a href="#" title="Back to first row">Back to first row</a></li>
+							<li class="active"><a href="#" title="${_('Back to first row')}">${_('Back to first row')}</a></li>
 				            % endif
 				            % endif
 							% if has_more:
 							% if has_more:
-				    		<li><a href="${ url('beeswax.views.view_results', query.id, next_row) }" title="Next page">Next page &rarr;</a></li>
+				    		<li><a href="${ url('beeswax.views.view_results', query.id, next_row) }" title="${_('Next page')}">${_('Next page')} &rarr;</a></li>
 							% endif
 							% endif
 				    	</ul>
 				    	</ul>
 				    </div>
 				    </div>
@@ -128,20 +129,20 @@ ${layout.menubar(section='query')}
 	<form id="saveForm" action="${url('beeswax.views.save_results', query.id) }" method="POST" class="form form-inline form-padding-fix">
 	<form id="saveForm" action="${url('beeswax.views.save_results', query.id) }" method="POST" class="form form-inline form-padding-fix">
 	    <div class="modal-header">
 	    <div class="modal-header">
 	        <a href="#" class="close" data-dismiss="modal">&times;</a>
 	        <a href="#" class="close" data-dismiss="modal">&times;</a>
-	        <h3>Save Query Results</h3>
+	        <h3>${_('Save Query Results')}</h3>
 	    </div>
 	    </div>
 	    <div class="modal-body">
 	    <div class="modal-body">
 			<label class="radio">
 			<label class="radio">
 				<input id="id_save_target_0" type="radio" name="save_target" value="to a new table" checked="checked"/>
 				<input id="id_save_target_0" type="radio" name="save_target" value="to a new table" checked="checked"/>
-				&nbsp;In a new table
+				&nbsp;${_('In a new table')}
 			</label>
 			</label>
-			${comps.field(save_form['target_table'], notitle=True, placeholder="Table Name")}
+			${comps.field(save_form['target_table'], notitle=True, placeholder=_('Table Name'))}
 			<br/>
 			<br/>
 			<label class="radio">
 			<label class="radio">
 				<input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
 				<input id="id_save_target_1" type="radio" name="save_target" value="to HDFS directory">
-				&nbsp;In an HDFS directory
+				&nbsp;${_('In an HDFS directory')}
 			</label>
 			</label>
-			${comps.field(save_form['target_dir'], notitle=True, hidden=True, placeholder="Results location", klass="pathChooser")}
+			${comps.field(save_form['target_dir'], notitle=True, hidden=True, placeholder=_('Results location'), klass="pathChooser")}
 			<br/>
 			<br/>
 			<br/>
 			<br/>
 			<div id="fileChooserModal" class="smallModal well hide">
 			<div id="fileChooserModal" class="smallModal well hide">
@@ -150,10 +151,10 @@ ${layout.menubar(section='query')}
 	    </div>
 	    </div>
 	    <div class="modal-footer">
 	    <div class="modal-footer">
 			<div id="fieldRequired" class="hide" style="position: absolute; left: 10;">
 			<div id="fieldRequired" class="hide" style="position: absolute; left: 10;">
-				<span class="label label-important">Sorry, name is required.</span>
+				<span class="label label-important">${_('Sorry, name is required.')}</span>
 	        </div>
 	        </div>
-	        <input type="submit" class="btn primary" value="Save" name="save" />
-			<button class="btn" data-dismiss="modal">Cancel</button>
+	        <input type="submit" class="btn primary" value="${_('Save')}" name="save" />
+			<button class="btn" data-dismiss="modal">${_('Cancel')}</button>
 	    </div>
 	    </div>
     </form>
     </form>
 </div>
 </div>

+ 7 - 6
apps/beeswax/src/beeswax/templates/watch_wait.mako

@@ -15,23 +15,24 @@
 ## limitations under the License.
 ## limitations under the License.
 <%!
 <%!
 from desktop.views import commonheader, commonfooter
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Waiting for query...", "beeswax", "100px")}
+${commonheader(_('Beeswax: Waiting for query...'), "beeswax", "100px")}
 ${layout.menubar(section='query')}
 ${layout.menubar(section='query')}
 
 
 <meta http-equiv="refresh" content="3;${url('beeswax.views.watch_query', query.id)}?${fwd_params}" />
 <meta http-equiv="refresh" content="3;${url('beeswax.views.watch_query', query.id)}?${fwd_params}" />
 
 
 <div class="container-fluid">
 <div class="container-fluid">
-	<h1>Beeswax: Waiting for query... ${util.render_query_context(query_context)}</h1>
+	<h1>${_('Beeswax: Waiting for query...')} ${util.render_query_context(query_context)}</h1>
 	<div class="row-fluid">
 	<div class="row-fluid">
 		<div class="span3">
 		<div class="span3">
 			<div class="well sidebar-nav">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 				<ul class="nav nav-list">
 					<%
 					<%
 			          n_jobs = hadoop_jobs and len(hadoop_jobs) or 0
 			          n_jobs = hadoop_jobs and len(hadoop_jobs) or 0
-			          mr_jobs = (n_jobs == 1) and "MR Job" or "MR Jobs"
+			          mr_jobs = (n_jobs == 1) and _('MR Job') or _('MR Jobs')
 			        %>
 			        %>
 				 	% if n_jobs > 0:
 				 	% if n_jobs > 0:
 						<li class="nav-header">${mr_jobs} (${n_jobs})</li>
 						<li class="nav-header">${mr_jobs} (${n_jobs})</li>
@@ -41,15 +42,15 @@ ${layout.menubar(section='query')}
 						% endfor
 						% endfor
 					% else:
 					% else:
 						<li class="nav-header">${mr_jobs}</li>
 						<li class="nav-header">${mr_jobs}</li>
-						<li>No Hadoop jobs were launched in running this query.</li>
+						<li>${_('No Hadoop jobs were launched in running this query.')}</li>
 					% endif
 					% endif
 				</ul>
 				</ul>
 			</div>
 			</div>
 		</div>
 		</div>
 		<div class="span9">
 		<div class="span9">
 			<ul class="nav nav-tabs">
 			<ul class="nav nav-tabs">
-				<li class="active"><a href="#log" data-toggle="tab">Log</a></li>
-				<li><a href="#query" data-toggle="tab">Query</a></li>
+				<li class="active"><a href="#log" data-toggle="tab">${_('Log')}</a></li>
+				<li><a href="#query" data-toggle="tab">${_('Query')}</a></li>
 			</ul>
 			</ul>
 
 
 		   	<div class="tab-content">
 		   	<div class="tab-content">