Browse Source

HUE-760 [beeswax] Templates internationalization

Created message bundles for all the templates
Enrico Berti 14 năm trước cách đây
mục cha
commit
bdb090b
27 tập tin đã thay đổi với 2842 bổ sung395 xóa
  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.
 <%!
   from desktop.lib.django_util import extract_field_data
+  from django.utils.translation import ugettext as _
 %>
 <%def name="fieldName(field)">
 
@@ -194,11 +195,11 @@ ${field.label_tag() | n}
 <%def name="pagination(page)">
     <div class="pagination">
         <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>
-        <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>
 </%def>

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

@@ -15,30 +15,31 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.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')}
 
 <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="span3">
             <div class="well sidebar-nav">
                 <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>
             </div>
         </div>
         <div class="span9">
             <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>
             <form id="delimiterForm" action="${action}" method="POST" class="form-horizontal">
                 <div class="hide">
@@ -46,23 +47,23 @@ ${layout.menubar(section='tables')}
                     ${comps.field(delim_form['file_type'])}
                 </div>
                 <fieldset>
-                    <div class="alert alert-info"><h3>Choose A Delimiter</h3>
+                    <div class="alert alert-info"><h3>${_('Choose A Delimiter')}</h3>
                         % 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
                     </div>
                     <div class="control-group">
                         ${comps.bootstrapLabel(delim_form["delimiter"])}
                         <div class="controls">
                             ${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">
-                            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>
                         </div>
                     </div>
                     <div class="control-group">
-                        <label class="control-label">Table preview</label>
+                        <label class="control-label">${_('Table preview')}</label>
                         <div class="controls">
                             <div class="scrollable">
                                 <table class="table table-striped table-condensed">
@@ -89,8 +90,8 @@ ${layout.menubar(section='tables')}
                 </fieldset>
 
                 <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>
             </form>
         </div>
@@ -108,7 +109,7 @@ ${layout.menubar(section='tables')}
     $(document).ready(function(){
         $(".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(){
             if ($(this).val() == "__other__"){
                 $("#id_delimiter_1").show();

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

@@ -15,34 +15,35 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.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')}
 
 
 <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="span3">
             <div class="well sidebar-nav">
                 <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>
             </div>
         </div>
         <div class="span9">
             <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>
             <form action="${action}" method="POST" class="form-horizontal">
                 <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">
                         ${comps.bootstrapLabel(file_form["name"])}
                         <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-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>
                         </div>
                     </div>
@@ -60,13 +61,13 @@ ${layout.menubar(section='tables')}
                         ${comps.bootstrapLabel(file_form["comment"])}
                         <div class="controls">
                             ${comps.field(file_form["comment"],
-                            placeholder="Optional",
+                            placeholder=_("Optional"),
                             klass="",
                             show_errors=False
                             )}
                             <span  class="help-inline">${unicode(file_form["comment"].errors) | n}</span>
                         <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>
                         </div>
                     </div>
@@ -81,7 +82,7 @@ ${layout.menubar(section='tables')}
                             )}
                             <span  class="help-inline">${unicode(file_form["path"].errors) | n}</span>
                         <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>
                         </div>
                     </div>
@@ -90,16 +91,16 @@ ${layout.menubar(section='tables')}
                         <div class="controls">
                             ${comps.field(file_form["do_import"], render_default=True)}
                             <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">
-                            <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>
                         </span>
                         </div>
                     </div>
                 </fieldset>
                 <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>
             </form>
         </div>
@@ -110,7 +111,7 @@ ${layout.menubar(section='tables')}
 <div id="chooseFile" class="modal hide fade">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a file</h3>
+        <h3>${_('Choose a file')}</h3>
     </div>
     <div class="modal-body">
         <div id="filechooser">

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

@@ -15,25 +15,26 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Hive Configuration Variables", "beeswax", "100px")}
+${commonheader(_('Hive Configuration Variables'), "beeswax", "100px")}
 ${layout.menubar(section='hive configuration')}
 <div class="container-fluid">
-	<h1>Hive Configuration Variables</h1>
+	<h1>${_('Hive Configuration Variables')}</h1>
 	<div class="well">
 		<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>
 	</div>
 	<table class="table table-striped table-condensed datatables">
 		<thead>
 			<tr>
-				<th>Key</th>
-				<th>Value</th>
-				<th>Description</th>
+				<th>${_('Key')}</th>
+				<th>${_('Value')}</th>
+				<th>${_('Description')}</th>
 			</tr>
 		</thead>
 		<tbody>

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

@@ -15,19 +15,20 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Create Table", "beeswax", "100px")}
+${commonheader(_('Beeswax: Create Table'), "beeswax", "100px")}
 <div class="container-fluid">
   <div class="toolbar">
   </div>
 
 <div id="create_table" class="view">
   <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">
-       <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>
   </div>
 </div>

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

@@ -15,37 +15,38 @@
 ## limitations under the License.
 <%!
     from desktop.views import commonheader, commonfooter
+    from django.utils.translation import ugettext as _
 %>
 <%namespace name="comps" file="beeswax_components.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')}
 
 <div class="container-fluid">
-<h1>Create a new table manually</h1>
+<h1>${_('Create a new table manually')}</h1>
 <div class="row-fluid">
 <div class="span3">
     <div class="well sidebar-nav">
         <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>
     </div>
 </div>
 <div class="span9">
 <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>
 <form action="#" method="POST" id="mainForm" class="form-horizontal">
 <div id="step1" class="stepDetails">
     <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">
             ${comps.bootstrapLabel(table_form["name"])}
             <div class="controls">
@@ -54,7 +55,7 @@ ${layout.menubar(section='tables')}
                 )
                 )}
                 <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>
             </div>
         </div>
@@ -62,11 +63,11 @@ ${layout.menubar(section='tables')}
             ${comps.bootstrapLabel(table_form["comment"])}
             <div class="controls">
                 ${comps.field(table_form["comment"], attrs=dict(
-                placeholder='Optional',
+                placeholder=_('Optional'),
                 )
                 )}
                 <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>
             </div>
         </div>
@@ -74,18 +75,14 @@ ${layout.menubar(section='tables')}
 </div>
 <div id="step2" class="stepDetails hide">
     <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>
         <%
             selected = table_form["row_format"].data or table_form["row_format"].field.initial
         %>
         <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">
                 <label class="radio">
                     <input type="radio" name="table-row_format" value="Delimited"
@@ -93,10 +90,10 @@ ${layout.menubar(section='tables')}
                            checked
                         % 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 class="radio">
                     <input type="radio" name="table-row_format" value="SerDe"
@@ -104,10 +101,10 @@ ${layout.menubar(section='tables')}
                            checked
                         % endif
                             >
-                    SerDe
-                                <span class="help-inline">
-                                (Enter a specialized serialization implementation.)
-                                </span>
+                    ${_('SerDe')}
+                    <span class="help-inline">
+                    ${_('(Enter a specialized serialization implementation.)')}
+                    </span>
                 </label>
             </div>
         </div>
@@ -116,16 +113,16 @@ ${layout.menubar(section='tables')}
 <div id="step3" class="stepDetails hide">
     <fieldset>
         <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 class="control-group">
                 ${comps.bootstrapLabel(table_form["field_terminator"])}
                 <div class="controls">
                     ${comps.field(table_form["field_terminator"], render_default=True)}
                     <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 class="control-group">
@@ -133,8 +130,8 @@ ${layout.menubar(section='tables')}
                 <div class="controls">
                     ${comps.field(table_form["collection_terminator"], render_default=True)}
                     <span class="help-block">
-								Use for array types.
-								</span>
+                        ${_('Use for array types.')}
+                    </span>
                 </div>
             </div>
             <div class="control-group">
@@ -142,13 +139,13 @@ ${layout.menubar(section='tables')}
                 <div class="controls">
                     ${comps.field(table_form["map_key_terminator"], render_default=True)}
                     <span class="help-block">
-								Use for map types.
-								</span>
+                        ${_('Use for map types.')}
+                    </span>
                 </div>
             </div>
         </div>
         <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 class="control-group">
                 ${comps.bootstrapLabel(table_form["serde_name"])}
@@ -158,8 +155,8 @@ ${layout.menubar(section='tables')}
                     )
                     )}
                     <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 class="control-group">
@@ -170,8 +167,8 @@ ${layout.menubar(section='tables')}
                     )
                     )}
                     <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>
@@ -179,14 +176,15 @@ ${layout.menubar(section='tables')}
 </div>
 <div id="step4" class="stepDetails hide">
     <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 class="control-group">
-            <label id="fileFormatRadio" class="control-label">File format</label>
+            <label id="fileFormatRadio" class="control-label">${_('File format')}</label>
             <div class="controls">
                 ${comps.field(table_form["file_format"],
                 render_default=True,
@@ -204,8 +202,8 @@ ${layout.menubar(section='tables')}
                     )
                     )}
                     <span class="help-block">
-								Java Class used to read data
-								</span>
+                        ${_('Java Class used to read data')}
+                    </span>
                 </div>
             </div>
             <div class="control-group">
@@ -216,8 +214,8 @@ ${layout.menubar(section='tables')}
                     )
                     )}
                     <span class="help-block">
-								Java Class used to write data
-								</span>
+                        ${_('Java Class used to write data')}
+                    </span>
                 </div>
             </div>
         </div>
@@ -225,21 +223,21 @@ ${layout.menubar(section='tables')}
 </div>
 <div id="step5" class="stepDetails hide">
     <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 class="control-group">
-            <label class="control-label">Location</label>
+            <label class="control-label">${_('Location')}</label>
             <div class="controls">
                 <label class="checkbox">
                     ${comps.field(table_form["use_default_location"],
                     render_default=True
                     )}
-                    Use default location
+                    ${_('Use default location')}
                 </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>
 
@@ -250,17 +248,17 @@ ${layout.menubar(section='tables')}
                 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>
     </fieldset>
 </div>
 <div id="step6" class="stepDetails hide">
     <fieldset>
-        <div class="alert alert-info"><h3>Configure Table Columns</h3>
+        <div class="alert alert-info"><h3>${_('Configure Table Columns')}</h3>
         </div>
         % for form in columns_form.forms:
             ${render_column(form)}
@@ -268,21 +266,15 @@ ${layout.menubar(section='tables')}
         <div class="hide">
             ${unicode(columns_form.management_form) | n}
         </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>
     <br/><br/>
     <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>
         % for form in partitions_form.forms:
             ${render_column(form, True)}
@@ -290,14 +282,14 @@ ${layout.menubar(section='tables')}
         <div class="hide">
             ${unicode(partitions_form.management_form) | n}
         </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>
 </div>
 <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>
 </form>
 </div>
@@ -312,59 +304,59 @@ ${layout.menubar(section='tables')}
         <div class="remove">
         ${comps.field(form['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
         type="submit",
-        title="Delete this column",
+        title=_("Delete this column"),
         klass="btn btn-mini removeBtn"
         ), value=True)}
         </div>
         <div class="control-group">
-            <label class="control-label">Column name</label>
+            <label class="control-label">${_('Column name')}</label>
             <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">
-                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>
             </div>
         </div>
         <div class="control-group">
-            <label class="control-label">Column type</label>
+            <label class="control-label">${_('Column type')}</label>
             <div class="controls columnType">
             ${comps.field(form["column_type"],
             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>
         % if is_partition_form == False:
                 <div class="arraySpec hide">
                     <div class="control-group">
-                        <label class="control-label">Array value type</label>
+                        <label class="control-label">${_('Array value type')}</label>
                         <div class="controls">
                         ${comps.field(form["array_type"], render_default=True)}
                             <span class="help-inline">
-                            Type of the array values.
-                        </span>
+                            ${_('Type of the array values.')}
+                            </span>
                         </div>
                     </div>
                 </div>
                 <div class="mapSpec hide">
                     <div class="control-group">
-                        <label class="control-label">Map Key type</label>
+                        <label class="control-label">${_('Map Key type')}</label>
                         <div class="controls">
                         ${comps.field(form["map_key_type"], render_default=True)}
                             <span class="help-inline">
-                        Type of the map keys.
-                        </span>
+                            ${_('Type of the map keys.')}
+                            </span>
                         </div>
                     </div>
                     <div class="control-group">
-                        <label class="control-label">Map Value type</label>
+                        <label class="control-label">${_('Map Value type')}</label>
                         <div class="controls">
                         ${comps.field(form["map_value_type"], render_default=True)}
                             <span class="help-inline">
-                            Type of the map values.
-                        </span>
+                            ${_('Type of the map values.')}
+                            </span>
                         </div>
                     </div>
                 </div>
@@ -381,7 +373,7 @@ ${layout.menubar(section='tables')}
 <div id="chooseFile" class="modal hide fade">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a file</h3>
+        <h3>${_('Choose a file')}</h3>
     </div>
     <div class="modal-body">
         <div id="filechooser">
@@ -455,7 +447,7 @@ ${layout.menubar(section='tables')}
             $(".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(){
             if ($(this).val() == "__other__"){
                 $("#id_table-field_terminator_1").show();
@@ -464,7 +456,7 @@ ${layout.menubar(section='tables')}
                 $("#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(){
             if ($(this).val() == "__other__"){
                 $("#id_table-collection_terminator_1").show();
@@ -473,7 +465,7 @@ ${layout.menubar(section='tables')}
                 $("#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(){
             if ($(this).val() == "__other__"){
                 $("#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.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.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')}
 
 <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="span3">
             <div class="well sidebar-nav">
                 <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>
             </div>
         </div>
         <div class="span9">
             <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>
             <form action="${action}" method="POST" class="form-stacked">
                 <div class="hide">
@@ -51,7 +52,7 @@ ${layout.menubar(section='tables')}
                     if n_rows > 2: n_rows = 2
                 %>
                 <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="controls">
                             <div class="scrollable">
@@ -63,7 +64,7 @@ ${layout.menubar(section='tables')}
                                                 ${comps.label(form["column_name"])}
                                                 ${comps.field(form["column_name"],
                                                 render_default=False,
-                                                placeholder="Column name"
+                                                placeholder=_("Column name")
                                                 )}
                                                     <br/><br/>
                                                 ${comps.label(form["column_type"])}
@@ -76,7 +77,7 @@ ${layout.menubar(section='tables')}
                                     </tr>
                                     % for i, row in enumerate(fields_list[:n_rows]):
                                         <tr>
-                                            <td><em>Row #${i + 1}</em></td>
+                                            <td><em>${_('Row')} #${i + 1}</em></td>
                                         % for val in row:
                                                 <td>${val}</td>
                                         % endfor
@@ -88,8 +89,8 @@ ${layout.menubar(section='tables')}
                     </div>
                 </fieldset>
                 <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>
             </form>
         </div>

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

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

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

@@ -15,25 +15,26 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%
   if is_view:
-    view_or_table_noun = "View"
+    view_or_table_noun = _("View")
   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')}
 <%def name="column_table(cols)">
 
     <table class="table table-striped table-condensed datatables">
       <thead>
         <tr>
-          <th>Name</th>
-          <th>Type</th>
-          <th>Comment</th>
+          <th>${_('Name')}</th>
+          <th>${_('Type')}</th>
+          <th>${_('Comment')}</th>
         </tr>
       </thead>
       <tbody>
@@ -50,16 +51,16 @@ ${layout.menubar(section='tables')}
 </%def>
 
 <div class="container-fluid">
-	<h1>Beeswax Table Metadata: ${table.tableName}</h1>
+	<h1>${_('Beeswax Table Metadata:')} ${table.tableName}</h1>
 	<div class="row-fluid">
 		<div class="span3">
 			<div class="well sidebar-nav">
 				<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>
 			</div>
 		</div>
@@ -69,12 +70,12 @@ ${layout.menubar(section='tables')}
 			% endif
 
 			<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:
-					<li><a href="#partitionColumns" data-toggle="tab">Partition Columns</a></li>
+					<li><a href="#partitionColumns" data-toggle="tab">${_('Partition Columns')}</a></li>
 		        % endif
 				% 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
 			</ul>
 
@@ -85,7 +86,7 @@ ${layout.menubar(section='tables')}
 		        % if len(table.partitionKeys) > 0:
 		          <div class="tab-pane" id="partitionColumns">
 		            ${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>
 		        % endif
 				% 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) }">
 	<div class="modal-header">
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
-		<h3>Drop Table</h3>
+		<h3>${_('Drop Table')}</h3>
 	</div>
 	<div class="modal-body">
 	  <div id="dropTableMessage" class="alert">
@@ -130,8 +131,8 @@ ${layout.menubar(section='tables')}
 	  </div>
 	</div>
 	<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>
 	</form>
 </div>
@@ -142,11 +143,11 @@ ${layout.menubar(section='tables')}
 	<form method="POST" action="${ url("beeswax.views.load_table", table=table_name) }" class="form-stacked">
 	<div class="modal-header">
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
-		<h3>Import data</h3>
+		<h3>${_('Import data')}</h3>
 	</div>
 	<div class="modal-body">
 	  <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>
 
 
@@ -175,7 +176,7 @@ ${layout.menubar(section='tables')}
 
 		<div class="clearfix">
 			<div class="input">
-				<input type="checkbox" name="overwrite"/> Overwrite existing data
+				<input type="checkbox" name="overwrite"/> ${_('Overwrite existing data')}
 			</div>
 		</div>
 
@@ -184,8 +185,8 @@ ${layout.menubar(section='tables')}
 	</div>
 	</div>
 	<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>
 	</form>
 </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.views import commonheader, commonfooter
+  from django.utils.translation import ugettext as _
 %>
 
 <%namespace name="comps" file="beeswax_components.mako" />
@@ -23,7 +24,7 @@
 <%namespace name="util" file="util.mako" />
 
 <%def name="query()">
-    <h1>Hive Query</h1>
+    <h1>${_('Hive Query')}</h1>
     <fieldset>
         % if design and not design.is_auto and design.name:
               <legend>${design.name}</legend>
@@ -32,12 +33,12 @@
               % endif
 
           % else:
-            <legend>Query</legend>
+            <legend>${_('Query')}</legend>
           % endif
 
       <div class="clearfix">
         <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">
             % if len(form.query["query"].errors):
                 ${unicode(form.query["query"].errors) | n}
@@ -48,18 +49,18 @@
     </fieldset>
 
     <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:
-        <a id="saveQuery" class="btn">Save</a>
+        <a id="saveQuery" class="btn">${_('Save')}</a>
         % 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>
 </%def>
 
 
-${commonheader("Hive Query", "beeswax", "100px")}
+${commonheader(_('Hive Query'), "beeswax", "100px")}
 ${layout.menubar(section='query')}
 
 <div class="container-fluid">
@@ -68,14 +69,14 @@ ${layout.menubar(section='query')}
             <div class="well sidebar-nav">
                 <form id="advancedSettingsForm" action="${action}" method="POST" class="form form-horizontal noPadding">
                     <ul class="nav nav-list">
-                        <li class="nav-header">Hive settings</li>
+                        <li class="nav-header">${_('Hive settings')}</li>
                         <li>
                             % for i, f in enumerate(form.settings.forms):
                             <div class="param">
                                 <div class="remove">
                                     ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                         type="submit",
-                                        title="Delete this setting",
+                                        title=_("Delete this setting"),
                                         klass="btn btn-mini settingsDelete"
                                     ), value=True)}
                                 </div>
@@ -100,17 +101,17 @@ ${layout.menubar(section='query')}
 
                             % endfor
                             <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>
                         </li>
-                        <li class="nav-header">File Resources</li>
+                        <li class="nav-header">${_('File Resources')}</li>
                         <li>
                             % for i, f in enumerate(form.file_resources.forms):
                             <div class="param">
                                 <div class="remove">
                                     ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                         type="submit",
-                                        title="Delete this setting",
+                                        title=_("Delete this setting"),
                                         klass="btn btn-mini file_resourcesDelete"
                                     ), value=True)}
                                 </div>
@@ -135,17 +136,17 @@ ${layout.menubar(section='query')}
 
                             % endfor
                             <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>
                         </li>
-                        <li class="nav-header">User-defined Functions</li>
+                        <li class="nav-header">${_('User-defined Functions')}</li>
                         <li>
                             % for i, f in enumerate(form.functions.forms):
                                 <div class="param">
                                     <div class="remove">
                                         ${comps.field(f['_deleted'], tag="button", button_text="x", notitle=True, attrs=dict(
                                             type="submit",
-                                            title="Delete this setting",
+                                            title=_("Delete this setting"),
                                             klass="btn btn-mini file_resourcesDelete"
                                         ), value=True)}
                                     </div>
@@ -170,28 +171,28 @@ ${layout.menubar(section='query')}
                               ${comps.field(f['_exists'], hidden=True)}
                             % endfor
                             <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>
                         </li>
-                        <li class="nav-header">Parametrization</li>
+                        <li class="nav-header">${_('Parametrization')}</li>
                         <li>
                             ${comps.field(form.query["is_parameterized"],
                                 notitle = True,
                                 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(
                                   data_help_direction='11'
                                 )
                             )}
                         </li>
-                        <li class="nav-header">Email Notification</li>
+                        <li class="nav-header">${_('Email Notification')}</li>
                         <li>
                             ${comps.field(form.query["email_notify"],
                               notitle = True,
                               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(
                                 data_help_direction='11'
                               )
@@ -205,10 +206,10 @@ ${layout.menubar(section='query')}
         <div class="span9">
             % if error_message:
                 <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>
                     % 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
                 </div>
             % endif
@@ -220,13 +221,13 @@ ${layout.menubar(section='query')}
             % if error_messages or log:
                 <ul class="nav nav-tabs">
                     <li class="active">
-                        <a href="#queryPane" data-toggle="tab">Query</a>
+                        <a href="#queryPane" data-toggle="tab">${_('Query')}</a>
                     </li>
                     % if error_message or log:
                       <li>
                         <a href="#errorPane" data-toggle="tab">
                         % if log:
-                            Error Log
+                            ${_('Error Log')}
                         % else:
                             &nbsp;
                         % endif
@@ -259,7 +260,7 @@ ${layout.menubar(section='query')}
 <div id="chooseFile" class="modal hide fade">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a file</h3>
+        <h3>${_('Choose a file')}</h3>
     </div>
     <div class="modal-body">
         <div id="filechooser">
@@ -272,11 +273,11 @@ ${layout.menubar(section='query')}
 <div id="saveAs" class="modal hide fade">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Choose a name</h3>
+        <h3>${_('Choose a name')}</h3>
     </div>
     <div class="modal-body">
         <div class="clearfix">
-            <label>Name</label>
+            <label>${_('Name')}</label>
             ${comps.field(form.saveform['name'])}
         </div>
         <div class="clearfix">
@@ -285,7 +286,7 @@ ${layout.menubar(section='query')}
         </div>
     </div>
     <div class="modal-footer">
-        <button id="saveAsNameBtn" class="btn primary">Save</button>
+        <button id="saveAsNameBtn" class="btn primary">${_('Save')}</button>
     </div>
 </div>
 

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

@@ -15,19 +15,20 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Query Explanation", "beeswax", "100px")}
+${commonheader(_('Query Explanation'), "beeswax", "100px")}
 ${layout.menubar(section='saved queries')}
 
 <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">
-        <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>
 
     <div class="tab-content">

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

@@ -15,10 +15,11 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax", "beeswax", "100px")}
+${commonheader(_('Beeswax'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 <div class="container-fluid">
     <div class="row-fluid">
@@ -26,28 +27,28 @@ ${layout.menubar(section='tables')}
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                     % 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
-                    <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>
             </div>
         </div>
         <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>
@@ -55,14 +56,14 @@ ${layout.menubar(section='tables')}
 <div id="installSamples" class="modal hide fade">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>Install samples</h3>
+        <h3>${_('Install samples')}</h3>
     </div>
     <div class="modal-body">
       <div id="installSamplesMessage" class="alert"></div>
     </div>
     <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>
 
@@ -82,7 +83,7 @@ ${layout.menubar(section='tables')}
                         window.location.href = "/beeswax/tables";
                     }
                     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);
                     }
                 }

+ 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
 ## multiple spaces and line breaks cause issues
 <%!
+from django.utils.translation import ugettext as _
+
 def is_selected(section, matcher):
   if section == matcher:
     return "active"
@@ -29,12 +31,12 @@ def is_selected(section, matcher):
 <div class="subnav subnav-fixed">
 	<div class="container-fluid">
 		<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>
 	</div>
 </div>

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

@@ -17,21 +17,22 @@
     import time
     from django.template.defaultfilters import timesince
     from desktop.views import commonheader, commonfooter
+    from django.utils.translation import ugettext as _
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Queries", "beeswax", "100px")}
+${commonheader(_('Beeswax: Queries'), "beeswax", "100px")}
 ${layout.menubar(section='saved queries')}
 <div class="container-fluid">
-    <h1>Beeswax: Queries</h1>
+    <h1>${_('Beeswax: Queries')}</h1>
     <table class="table table-striped table-condensed datatables">
         <thead>
         <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>
         </tr>
         </thead>
@@ -63,13 +64,13 @@ ${layout.menubar(section='saved queries')}
                     <td>${design.owner.username}</td>
                 <td>
                     % if design.type == models.SavedQuery.REPORT:
-                        Report
+                        ${_('Report')}
                     % else:
-                        Query
+                        ${_('Query')}
                     % endif
                 </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>
                 <div class="btn-group">
@@ -81,15 +82,15 @@ ${layout.menubar(section='saved queries')}
 
                 % if may_edit:
                     % 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:
-                            <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
-                        <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
-                    <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>
                 </div>
 
@@ -106,11 +107,11 @@ ${layout.menubar(section='saved queries')}
     <form id="deleteQueryForm" action="" method="POST">
         <div class="modal-header">
             <a href="#" class="close" data-dismiss="modal">&times;</a>
-            <h3 id="deleteQueryMessage">Confirm action</h3>
+            <h3 id="deleteQueryMessage">${_('Confirm action')}</h3>
         </div>
         <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>
     </form>
 </div>

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

@@ -16,23 +16,24 @@
 <%!
 import time
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
 <%!  from beeswax.views import collapse_whitespace %>
-${commonheader("Beeswax: Query History", "beeswax", "100px")}
+${commonheader(_('Beeswax: Query History'), "beeswax", "100px")}
 ${layout.menubar(section='history')}
 <%def name="show_saved_query(design, history)">
   % if design:
     % if request.user == design.owner:
       % 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:
-        <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
     % if design.is_auto:
-      [ Unsaved ]
+      [ ${_('Unsaved')} ]
     % else:
       ${design.name}
     % endif
@@ -40,33 +41,33 @@ ${layout.menubar(section='history')}
     </a>
     % else:
     ## 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
   % else:
-    [ Auto generated action ]
+    [ ${_('Auto generated action')} ]
   % endif
 </%def>
 
 <div class="container-fluid">
-	<h1>Beeswax: Query History</h1>
+	<h1>${_('Beeswax: Query History')}</h1>
 	<div class="row-fluid">
 		<div class="span3">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
-					<li class="nav-header">Actions</li>
+					<li class="nav-header">${_('Actions')}</li>
                     % if share_queries:
                         % if filter_params.get('user') == ':all':
                           <%
                             my_querydict = filter_params.copy()
                             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:
                           <%
                             my_querydict = filter_params.copy()
                             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
 
@@ -75,13 +76,13 @@ ${layout.menubar(section='history')}
 				        my_querydict = filter_params.copy()
 				        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:
 				      <%
 				        my_querydict = filter_params.copy()
 				        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
 				</ul>
 			</div>
@@ -91,12 +92,12 @@ ${layout.menubar(section='history')}
 		<table class="table table-striped table-condensed datatables">
 		    <thead>
 		      <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>
 		    </thead>
 		    <tbody>
@@ -128,7 +129,7 @@ ${layout.menubar(section='history')}
 		        <td>${models.QueryHistory.STATE[query.last_state]}</td>
 		        <td>
 		          % 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:
 		            ~
 		          % endif

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

@@ -15,18 +15,19 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.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()}
 <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">
     <form action="${action}" method="POST">
       <dl>
         ${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.
         ${util.render_field(form["overwrite"])}
         ## Any existing data will be erased!
@@ -38,8 +39,7 @@ ${layout.menubar()}
         ## this data corresponds to.
       </dl>
       <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>
       <input type="submit">
     </form>

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

@@ -17,11 +17,12 @@
 import time
 from django.template.defaultfilters import timesince
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 <%!  from beeswax.views import collapse_whitespace %>
-${commonheader("Beeswax: My Queries", "beeswax", "100px")}
+${commonheader(_('Beeswax: My Queries'), "beeswax", "100px")}
 ${layout.menubar(section='my queries')}
 <style>
     .tab-content {
@@ -29,21 +30,21 @@ ${layout.menubar(section='my queries')}
     }
 </style>
 <div class="container-fluid">
-    <h1>Beeswax: My Queries</h1>
+    <h1>${_('Beeswax: My Queries')}</h1>
 
     <div class="well hueWell">
         <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>
 
         <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>
     </div>
 
     <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>
 
     <div class="tab-content">
@@ -52,10 +53,10 @@ ${layout.menubar(section='my queries')}
                  <table id="recentSavedQueriesTable" class="table table-striped table-condensed datatables">
                       <thead>
                         <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>
                         </tr>
                       </thead>
@@ -79,29 +80,29 @@ ${layout.menubar(section='my queries')}
                           </td>
                           <td>
                             % if design.type == models.SavedQuery.REPORT:
-                              Report
+                              ${_('Report')}
                             % else:
-                              Query
+                              ${_('Query')}
                             % endif
                           </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>
                             <div class="btn-group">
                                 <a href="#" data-toggle="dropdown" class="btn dropdown-toggle">
-                                       Options
+                                    ${_('Options')}
                                     <span class="caret"></span>
                                 </a>
                                 <ul class="dropdown-menu">
                                       % 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:
-                                        <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
-                                         <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>
                             </div>
                           </td>
@@ -110,7 +111,7 @@ ${layout.menubar(section='my queries')}
                       </tbody>
                     </table>
                     % 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
             </div>
 
@@ -118,11 +119,11 @@ ${layout.menubar(section='my queries')}
                 <table id="recentRunQueriesTable" class="table table-striped table-condensed datatables">
                   <thead>
                     <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>
                   </thead>
                   <tbody>
@@ -154,7 +155,7 @@ ${layout.menubar(section='my queries')}
                       <td>${models.QueryHistory.STATE[query.last_state]}</td>
                       <td>
                         % 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:
                           ~
                         % endif
@@ -164,7 +165,7 @@ ${layout.menubar(section='my queries')}
                   </tbody>
                 </table>
                 % 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
             </div>
     </div>
@@ -174,11 +175,11 @@ ${layout.menubar(section='my queries')}
     <form id="deleteQueryForm" action="" method="POST">
     <div class="modal-header">
         <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3 id="deleteQueryMessage">Confirm action</h3>
+        <h3 id="deleteQueryMessage">${_('Confirm action')}</h3>
     </div>
     <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>
     </form>
 </div>

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

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

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

@@ -15,29 +15,30 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
-${commonheader("Beeswax: Query Constructor", "beeswax", "100px")}
+${commonheader(_('Beeswax: Query Constructor'), "beeswax", "100px")}
 ${layout.menubar(section='report generator')}
 <div class="container-fluid">
-<h1>Report Generator</h1>
+<h1>${_('Report Generator')}</h1>
 % 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
 
 % if error_message:
-Error: <b>${error_message}</b>
+${_('Error:')} <b>${error_message}</b>
 % endif
 % if log:
 ## 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
 
 <form action="${action}" method="POST">
 
     ## columns management form
-    Add column:
+    ${_('Add column:')}
     ${unicode(mform.columns.management_form) | n}
 
     ## colums formset errors
@@ -59,7 +60,7 @@ Error: <b>${error_message}</b>
     <br/>
 
     ## conditions
-    <h2>Conditions</h2>
+    <h2>${_('Conditions')}</h2>
     <%def name="render_conds_formset(formset)">
       % for form in formset.forms:
 	<table>
@@ -102,8 +103,8 @@ Error: <b>${error_message}</b>
     ${render_union_mform(mform.union, 0)}
 
     <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/>
 
     ## design info
@@ -112,7 +113,7 @@ Error: <b>${error_message}</b>
 
 % if log:
 <br/>
-<a name="log"><h3>Server Log</h3></a>
+<a name="log"><h3>${_('Server Log')}</h3></a>
 <pre>
 ${log | h}
 </pre>

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

@@ -15,32 +15,33 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="comps" file="beeswax_components.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')}
 <div class="container-fluid">
 % if error_msg:
 <h4>${error_msg}</h4>
 % endif
-<h1>Save Query Results</h1>
+<h1>${_('Save Query Results')}</h1>
 <form id="saveForm" action="${action}" method="POST" class="form form-inline">
 	<label class="radio">
 		<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>
 	${comps.field(form['target_table'], notitle=True, placeholder="Table Name")}
 	<br/>
 	<label class="radio">
 		<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>
-	${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/>
-  <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>
 </div>
 

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

@@ -15,23 +15,24 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
-${commonheader("Beeswax: Table List", "beeswax", "100px")}
+${commonheader(_('Beeswax: Table List'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 
 <div class="container-fluid">
-	<h1>Beeswax: Table List</h1>
+	<h1>${_('Beeswax: Table List')}</h1>
 	<div class="row-fluid">
 		<div class="span3">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
-					<li class="nav-header">Actions</li>
+					<li class="nav-header">${_('Actions')}</li>
 					% 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
-		      		<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>
 			</div>
 		</div>
@@ -39,7 +40,7 @@ ${layout.menubar(section='tables')}
 			<table class="table table-condensed table-striped datatables">
 				<thead>
 					<tr>
-						<th>Table Name</th>
+						<th>${_('Table Name')}</th>
 						<th>&nbsp;</th>
 					</tr>
 				</thead>
@@ -49,7 +50,7 @@ ${layout.menubar(section='tables')}
 						<td>
 							<a href="${ url("beeswax.views.describe_table", table=table) }" data-row-selector="true">${ table }</a>
 						</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>
 				% endfor
 				</tbody>
@@ -64,7 +65,7 @@ ${layout.menubar(section='tables')}
 <div id="installSamples" class="modal hide fade">
 	<div class="modal-header">
 		<a href="#" class="close" data-dismiss="modal">&times;</a>
-		<h3>Install samples</h3>
+		<h3>${_('Install samples')}</h3>
 	</div>
 	<div class="modal-body">
 	  <div id="installSamplesMessage" class="alert">
@@ -72,8 +73,8 @@ ${layout.menubar(section='tables')}
 	  </div>
 	</div>
 	<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>
 % endif
@@ -107,7 +108,7 @@ ${layout.menubar(section='tables')}
                         window.location.href = "/beeswax/tables";
                     }
                     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);
                     }
                 }

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

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

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

@@ -15,30 +15,31 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.mako" />
 <%namespace name="util" file="util.mako" />
 <%namespace name="comps" file="beeswax_components.mako" />
-${commonheader("Beeswax: Query Results", "beeswax", "100px")}
+${commonheader(_('Beeswax: Query Results'), "beeswax", "100px")}
 ${layout.menubar(section='query')}
 
 <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="span3">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 					% 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
 					%if can_save:
-					<li><a data-toggle="modal" href="#saveAs">Save</a></li>
+					<li><a data-toggle="modal" href="#saveAs">${_('Save')}</a></li>
 					% endif
 					<%
 			          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:
 						<li class="nav-header">${mr_jobs} (${n_jobs})</li>
@@ -48,7 +49,7 @@ ${layout.menubar(section='query')}
 						% endfor
 					% else:
 						<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
 				</ul>
 			</div>
@@ -57,25 +58,25 @@ ${layout.menubar(section='query')}
 				<ul class="nav nav-tabs">
 					<li class="active"><a href="#results" data-toggle="tab">
 		  			%if error:
-			            Error
+			            ${_('Error')}
 					%else:
-						Results
+						${_('Results')}
 					%endif
 					</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>
 
 				<div class="tab-content">
 					<div class="active tab-pane" id="results">
 					% if error:
 		            <div class="alert alert-error">
-		              <h3>Error!</h3>
+		              <h3>${_('Error!')}</h3>
 		              <pre>${error_message | h}</pre>
 		            </div>
           			% else:
 		            % 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
             		<table class="table table-striped table-condensed resultTable" cellpadding="0" cellspacing="0">
 		              <thead>
@@ -100,12 +101,12 @@ ${layout.menubar(section='query')}
 					<div class="pagination pull-right">
 				    	<ul>
 							% 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:
-							<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
 							% 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
 				    	</ul>
 				    </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">
 	    <div class="modal-header">
 	        <a href="#" class="close" data-dismiss="modal">&times;</a>
-	        <h3>Save Query Results</h3>
+	        <h3>${_('Save Query Results')}</h3>
 	    </div>
 	    <div class="modal-body">
 			<label class="radio">
 				<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>
-			${comps.field(save_form['target_table'], notitle=True, placeholder="Table Name")}
+			${comps.field(save_form['target_table'], notitle=True, placeholder=_('Table Name'))}
 			<br/>
 			<label class="radio">
 				<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>
-			${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/>
 			<div id="fileChooserModal" class="smallModal well hide">
@@ -150,10 +151,10 @@ ${layout.menubar(section='query')}
 	    </div>
 	    <div class="modal-footer">
 			<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>
-	        <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>
     </form>
 </div>

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

@@ -15,23 +15,24 @@
 ## limitations under the License.
 <%!
 from desktop.views import commonheader, commonfooter
+from django.utils.translation import ugettext as _
 %>
 <%namespace name="layout" file="layout.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')}
 
 <meta http-equiv="refresh" content="3;${url('beeswax.views.watch_query', query.id)}?${fwd_params}" />
 
 <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="span3">
 			<div class="well sidebar-nav">
 				<ul class="nav nav-list">
 					<%
 			          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:
 						<li class="nav-header">${mr_jobs} (${n_jobs})</li>
@@ -41,15 +42,15 @@ ${layout.menubar(section='query')}
 						% endfor
 					% else:
 						<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
 				</ul>
 			</div>
 		</div>
 		<div class="span9">
 			<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>
 
 		   	<div class="tab-content">