galaxy-dev
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
March 2009
- 1 participants
- 10 discussions
27 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/6c555b0460f1
changeset: 1745:6c555b0460f1
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Fri Mar 27 16:37:49 2009 -0400
description:
i18n fix for build_from_current_history.mako template.
1 file(s) affected in this change:
templates/workflow/build_from_current_history.mako
diffs (9 lines):
diff -r e5e5280775c3 -r 6c555b0460f1 templates/workflow/build_from_current_history.mako
--- a/templates/workflow/build_from_current_history.mako Thu Mar 26 09:43:02 2009 -0400
+++ b/templates/workflow/build_from_current_history.mako Fri Mar 27 16:37:49 2009 -0400
@@ -1,4 +1,4 @@
-<% _ = t.gettext %>
+<% _=n_ %>
<!-- -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/e5e5280775c3
changeset: 1744:e5e5280775c3
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Thu Mar 26 09:43:02 2009 -0400
description:
merging from central
1 file(s) affected in this change:
test/functional/__init__.py
diffs (12 lines):
diff -r c8bf73ed4594 -r e5e5280775c3 test/functional/__init__.py
--- a/test/functional/__init__.py Thu Mar 26 09:34:05 2009 -0400
+++ b/test/functional/__init__.py Thu Mar 26 09:43:02 2009 -0400
@@ -24,7 +24,7 @@
# server (for running the tests against a running instance)
default_galaxy_test_host = "localhost"
-default_galaxy_test_port = "9999"
+default_galaxy_test_port = "9879"
default_galaxy_locales = 'en'
galaxy_test_file_dir = "test-data"
server = None
1
0
26 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/c8bf73ed4594
changeset: 1743:c8bf73ed4594
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Thu Mar 26 09:34:05 2009 -0400
description:
i18n fix: dataset.info should not be translated since it will generally not have an entry in the catalog. Wormbase fixes: URL to main site corrected, and all supported builds added to gbrowse_build_sites.txt.
4 file(s) affected in this change:
templates/root/history_common.mako
tool-data/shared/gbrowse/gbrowse_build_sites.txt
tools/data_source/wormbase.xml
universe_wsgi.ini.sample
diffs (58 lines):
diff -r 02843f56b812 -r c8bf73ed4594 templates/root/history_common.mako
--- a/templates/root/history_common.mako Wed Mar 25 11:51:30 2009 -0400
+++ b/templates/root/history_common.mako Thu Mar 26 09:34:05 2009 -0400
@@ -51,7 +51,7 @@
The job creating this dataset was cancelled before completion.
</div>
%elif data_state == "empty":
- <div>${_('No data: ')}<i>${_(data.display_info())}</i></div>
+ <div>${_('No data: ')}<i>${data.display_info()}</i></div>
%elif data_state == "ok":
<div>
${data.blurb},
@@ -63,7 +63,7 @@
<span class="${data.dbkey}">${_(data.dbkey)}</span>
%endif
</div>
- <div class="info">${_('Info: ')}${_(data.display_info())} </div>
+ <div class="info">${_('Info: ')}${data.display_info()}</div>
<div>
%if data.has_data:
<a href="${h.url_for( action='display', id=data.id, tofile='yes', toext=data.ext )}" target="_blank">save</a>
diff -r 02843f56b812 -r c8bf73ed4594 tool-data/shared/gbrowse/gbrowse_build_sites.txt
--- a/tool-data/shared/gbrowse/gbrowse_build_sites.txt Wed Mar 25 11:51:30 2009 -0400
+++ b/tool-data/shared/gbrowse/gbrowse_build_sites.txt Thu Mar 26 09:34:05 2009 -0400
@@ -1,5 +1,3 @@
-#Harvested from http://www.wormbase.org/db/seq/gbrowse/wormbase/
-#wormbase http://gvk.bx.psu.edu/cgi-bin/gbrowse/volvox? briggsae,briggsae_cb25,brugia,elegans,elegans_gmap,elegans_pmap,fly,fly31,nGASP,nGASP_submissions,remanei,wormbase,ws77,yeast_chr1
-#Harvested from http://flybase.bio.indiana.edu/cgi-bin/gbrowse/dmel/
-#flybase http://flybase.bio.indiana.edu/cgi-bin/gbrowse/dmel/ dana,dere,dgri,dmel,dmoj,dper,dpse,dsec,dsim,dvir,dwil,dyak,dmelstocks
-elegans http://brie3.cshl.edu:9000/db/seq/gbrowse/elegans/ cb1,cb2,cb3,ce1,ce2,ce3,ce4
\ No newline at end of file
+# wormbase sites / supported genomes
+main http://www.wormbase.org/db/seq/gbgff/c_elegans/ c_elegans,c_briggsae,c_remanei,c_brenneri,c_japonica,p_pristionchus,b_malayi
+test http://dev.wormbase.org/db/seq/gbrowse/c_elegans/ c_elegans,c_briggsae,c_remanei,c_brenneri,c_japonica,p_pristionchus,b_malayi
diff -r 02843f56b812 -r c8bf73ed4594 tools/data_source/wormbase.xml
--- a/tools/data_source/wormbase.xml Wed Mar 25 11:51:30 2009 -0400
+++ b/tools/data_source/wormbase.xml Thu Mar 26 09:34:05 2009 -0400
@@ -2,7 +2,7 @@
<tool name="Wormbase" id="wormbase" tool_type="data_source" URL_method="post">
<description>server</description>
<command interpreter="python">data_source.py $output</command>
- <inputs action="http://www.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" target="_top">
+ <inputs action="http://www.wormbase.org/db/seq/gbgff/c_elegans/" check_values="false" target="_top">
<display>go to Wormbase server $GALAXY_URL</display>
<param name="GALAXY_URL" type="baseurl" value="/tool_runner?tool_id=wormbase" />
</inputs>
diff -r 02843f56b812 -r c8bf73ed4594 universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample Wed Mar 25 11:51:30 2009 -0400
+++ b/universe_wsgi.ini.sample Thu Mar 26 09:34:05 2009 -0400
@@ -115,7 +115,7 @@
# Comma separated list of UCSC / gbrowse browsers to use for viewing
ucsc_display_sites = main,test,archaea
-gbrowse_display_sites = c_elegans,c_briggsae,c_remanei,c_brenneri,c_japonica,p_pristionchus,b_malayi
+gbrowse_display_sites = main,test
# Serving static files (needed if running standalone)
static_enabled = True
1
0
25 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/02843f56b812
changeset: 1742:02843f56b812
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Wed Mar 25 11:51:30 2009 -0400
description:
i18n fixes: uploading binary files now works again, multi-byte character files are no longer set as binary, file peek now supports multi-byte characters.
7 file(s) affected in this change:
eggs.ini
lib/galaxy/datatypes/data.py
lib/galaxy/datatypes/sniff.py
lib/galaxy/model/__init__.py
lib/galaxy/tools/actions/upload.py
lib/galaxy/util/__init__.py
lib/galaxy/web/framework/__init__.py
diffs (686 lines):
diff -r affd3085eee3 -r 02843f56b812 eggs.ini
--- a/eggs.ini Fri Mar 20 02:49:30 2009 -0400
+++ b/eggs.ini Wed Mar 25 11:51:30 2009 -0400
@@ -48,6 +48,7 @@
WebOb = 0.8.5
wsgiref = 0.1.2
Babel = 0.9.4
+wchartype = 0.1
; extra version information
[tags]
@@ -94,3 +95,4 @@
WebOb = http://pypi.python.org/packages/source/W/WebOb/WebOb-0.8.5.tar.gz
wsgiref = http://pypi.python.org/packages/source/w/wsgiref/wsgiref-0.1.2.zip
Babel = http://ftp.edgewall.com/pub/babel/Babel-0.9.4.zip
+wchartype = http://ginstrom.com/code/wchartype-0.1.zip
diff -r affd3085eee3 -r 02843f56b812 lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py Fri Mar 20 02:49:30 2009 -0400
+++ b/lib/galaxy/datatypes/data.py Wed Mar 25 11:51:30 2009 -0400
@@ -109,7 +109,7 @@
else:
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
- def display_peek(self, dataset):
+ def display_peek(self, dataset ):
"""Create HTML table, used for displaying peek"""
out = ['<table cellspacing="0" cellpadding="3">']
try:
@@ -121,7 +121,7 @@
line = line.strip()
if not line:
continue
- out.append( '<tr><td>%s</td></tr>' % escape( line ) )
+ out.append( '<tr><td>%s</td></tr>' % escape( unicode( line, 'utf-8' ) ) )
out.append( '</table>' )
out = "".join( out )
except Exception, exc:
@@ -190,7 +190,6 @@
except:
log.exception('Function %s is referred to in datatype %s for displaying as type %s, but is not accessible' % (self.supported_display_apps[type]['file_function'], self.__class__.__name__, type) )
return "This display type (%s) is not implemented for this datatype (%s)." % ( type, dataset.ext)
-
def get_display_links(self, dataset, type, app, base_url, **kwd):
"""Returns a list of tuples of (name, link) for a particular display type """
try:
@@ -199,21 +198,17 @@
except:
log.exception('Function %s is referred to in datatype %s for generating links for type %s, but is not accessible' % (self.supported_display_apps[type]['links_function'], self.__class__.__name__, type) )
return []
-
def get_converter_types(self, original_dataset, datatypes_registry):
"""Returns available converters by type for this dataset"""
return datatypes_registry.get_converters_by_datatype(original_dataset.ext)
-
def find_conversion_destination( self, dataset, accepted_formats, datatypes_registry, **kwd ):
"""Returns ( target_ext, exisiting converted dataset )"""
return datatypes_registry.find_conversion_destination_for_dataset_by_extensions( dataset, accepted_formats, **kwd )
-
def convert_dataset(self, trans, original_dataset, target_type, return_output = False, visible = True ):
"""This function adds a job to the queue to convert a dataset to another type. Returns a message about success/failure."""
converter = trans.app.datatypes_registry.get_converter_by_target_type( original_dataset.ext, target_type )
if converter is None:
raise "A converter does not exist for %s to %s." % ( original_dataset.ext, target_type )
-
#Generate parameter dictionary
params = {}
#determine input parameter name and add to params
@@ -223,31 +218,24 @@
input_name = key
break
params[input_name] = original_dataset
-
#Run converter, job is dispatched through Queue
converted_dataset = converter.execute( trans, incoming = params, set_output_hid = visible )
-
if len(params) > 0:
trans.log_event( "Converter params: %s" % (str(params)), tool_id=converter.id )
-
if not visible:
for name, value in converted_dataset.iteritems():
value.visible = False
-
if return_output:
return converted_dataset
return "The file conversion of %s on data %s has been added to the Queue." % (converter.name, original_dataset.hid)
-
def before_edit( self, dataset ):
"""This function is called on the dataset before metadata is edited."""
pass
-
def after_edit( self, dataset ):
"""This function is called on the dataset after metadata is edited."""
dataset.clear_associated_files( metadata_safe = True )
class Text( Data ):
-
def write_from_stream(self, dataset, stream):
"""Writes data from a stream"""
# write it twice for now
@@ -265,30 +253,36 @@
line = line.strip() + '\n'
fp.write(line)
fp.close()
-
def set_raw_data(self, dataset, data):
"""Saves the data on the disc"""
fd, temp_name = tempfile.mkstemp()
os.write(fd, data)
os.close(fd)
-
# rewrite the file with unix newlines
fp = open(dataset.file_name, 'wt')
for line in file(temp_name, "U"):
line = line.strip() + '\n'
fp.write(line)
fp.close()
-
os.remove( temp_name )
-
def get_mime(self):
"""Returns the mime type of the datatype"""
return 'text/plain'
-
def set_peek( self, dataset, line_count=None ):
if not dataset.dataset.purged:
# The file must exist on disk for the get_file_peek() method
dataset.peek = get_file_peek( dataset.file_name )
+ if line_count is None:
+ dataset.blurb = "%s lines" % util.commaify( str( get_line_count( dataset.file_name ) ) )
+ else:
+ dataset.blurb = "%s lines" % util.commaify( str( line_count ) )
+ else:
+ dataset.peek = 'file does not exist'
+ dataset.blurb = 'file purged from disk'
+ def set_multi_byte_peek( self, dataset, line_count=None ):
+ if not dataset.dataset.purged:
+ # The file must exist on disk for the get_file_peek() method
+ dataset.peek = get_file_peek( dataset.file_name, is_multi_byte=True )
if line_count is None:
dataset.blurb = "%s lines" % util.commaify( str( get_line_count( dataset.file_name ) ) )
else:
@@ -340,7 +334,7 @@
return out
return '??? bytes'
-def get_file_peek( file_name, WIDTH=256, LINE_COUNT=5 ):
+def get_file_peek( file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5 ):
"""
Returns the first LINE_COUNT lines wrapped to WIDTH
@@ -350,12 +344,12 @@
"""
lines = []
count = 0
- file_type = ''
+ file_type = None
data_checked = False
for line in file( file_name ):
- line = line[ :WIDTH ]
- if not data_checked and line:
- data_checked = True
+ line = line[:WIDTH]
+ if line and not is_multi_byte and not data_checked:
+ # See if we have a compressed or binary file
if line[0:2] == util.gzip_magic:
file_type = 'gzipped'
break
@@ -364,14 +358,17 @@
if ord( char ) > 128:
file_type = 'binary'
break
+ data_checked = True
+ if file_type in [ 'gzipped', 'binary' ]:
+ break
lines.append( line )
if count == LINE_COUNT:
break
count += 1
- if file_type:
- text = "%s file" %file_type
+ if file_type in [ 'gzipped', 'binary' ]:
+ text = "%s file" % file_type
else:
- text = '\n'.join( lines )
+ text = unicode( '\n'.join( lines ), 'utf-8' )
return text
def get_line_count(file_name):
diff -r affd3085eee3 -r 02843f56b812 lib/galaxy/datatypes/sniff.py
--- a/lib/galaxy/datatypes/sniff.py Fri Mar 20 02:49:30 2009 -0400
+++ b/lib/galaxy/datatypes/sniff.py Wed Mar 25 11:51:30 2009 -0400
@@ -1,8 +1,9 @@
"""
File format detector
"""
-import logging, sys, os, csv, tempfile, shutil, re
+import logging, sys, os, csv, tempfile, shutil, re, zipfile
import registry
+from galaxy import util
log = logging.getLogger(__name__)
@@ -13,18 +14,43 @@
return full_path
def stream_to_file( stream, suffix='', prefix='', dir=None, text=False ):
- """
- Writes a stream to a temporary file, returns the temporary file's name
- """
+ """Writes a stream to a temporary file, returns the temporary file's name"""
fd, temp_name = tempfile.mkstemp( suffix=suffix, prefix=prefix, dir=dir, text=text )
+ CHUNK_SIZE = 1048576
+ data_checked = False
+ is_compressed = False
+ is_binary = False
+ is_multi_byte = False
while 1:
- chunk = stream.read(1048576)
+ chunk = stream.read( CHUNK_SIZE )
if not chunk:
break
- # TODO: does this work on binary files?
- os.write( fd, chunk.encode( "utf-8" ) )
- os.close(fd)
- return temp_name
+ if not data_checked:
+ # See if we're uploading a compressed file
+ if zipfile.is_zipfile( temp_name ):
+ is_compressed = True
+ else:
+ magic_check = chunk[:2]
+ if magic_check == util.gzip_magic:
+ is_compressed = True
+ if not is_compressed:
+ # See if we have a multi-byte character file
+ chars = chunk[:100]
+ is_multi_byte = util.is_multi_byte( chars )
+ if not is_multi_byte:
+ for char in chars:
+ if ord( char ) > 128:
+ is_binary = True
+ break
+ data_checked = True
+ if not is_compressed and not is_binary:
+ os.write( fd, chunk.encode( "utf-8" ) )
+ else:
+ # Compressed files must be encoded after they are uncompressed in the upload utility,
+ # while binary files should not be encoded at all.
+ os.write( fd, chunk )
+ os.close( fd )
+ return temp_name, is_multi_byte
def convert_newlines( fname ):
"""
@@ -94,7 +120,7 @@
# Return number of lines in file.
return i + 1
-def get_headers(fname, sep, count=60):
+def get_headers( fname, sep, count=60, is_multi_byte=False ):
"""
Returns a list with the first 'count' lines split by 'sep'
@@ -105,12 +131,16 @@
headers = []
for idx, line in enumerate(file(fname)):
line = line.rstrip('\n\r')
+ if is_multi_byte:
+ # TODO: fix this - sep is never found in line
+ line = unicode( line, 'utf-8' )
+ sep = sep.encode( 'utf-8' )
headers.append( line.split(sep) )
if idx == count:
break
return headers
-def is_column_based(fname, sep='\t', skip=0):
+def is_column_based( fname, sep='\t', skip=0, is_multi_byte=False ):
"""
Checks whether the file is column based with respect to a separator
(defaults to tab separator).
@@ -138,9 +168,8 @@
>>> is_column_based(fname)
True
"""
- headers = get_headers(fname, sep)
+ headers = get_headers( fname, sep, is_multi_byte=is_multi_byte )
count = 0
-
if not headers:
return False
for hdr in headers[skip:]:
@@ -156,7 +185,7 @@
return False
return True
-def guess_ext( fname, sniff_order=None ):
+def guess_ext( fname, sniff_order=None, is_multi_byte=False ):
"""
Returns an extension that can be used in the datatype factory to
generate a data for the 'fname' file
@@ -220,20 +249,28 @@
return datatype.file_ext
except:
pass
-
headers = get_headers( fname, None )
- is_binary = True
- for hdr in headers:
- for char in hdr:
- try:
- if not ord(char) > 128:
- is_binary = False
- except:
- is_binary = False
+ is_binary = False
+ if is_multi_byte:
+ is_binary = False
+ else:
+ for hdr in headers:
+ for char in hdr:
+ if len( char ) > 1:
+ for c in char:
+ if ord( c ) > 128:
+ is_binary = True
+ break
+ elif ord( char ) > 128:
+ is_binary = True
+ break
+ if is_binary:
+ break
+ if is_binary:
break
if is_binary:
return 'data' #default binary data type file extension
- if is_column_based( fname, '\t', 1):
+ if is_column_based( fname, '\t', 1, is_multi_byte=is_multi_byte ):
return 'tabular' #default tabular data type file extension
return 'txt' #default text data type file extension
diff -r affd3085eee3 -r 02843f56b812 lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py Fri Mar 20 02:49:30 2009 -0400
+++ b/lib/galaxy/model/__init__.py Wed Mar 25 11:51:30 2009 -0400
@@ -245,6 +245,8 @@
return datatypes_registry.get_mimetype_by_extension( self.extension.lower() )
def set_peek( self ):
return self.datatype.set_peek( self )
+ def set_multi_byte_peek( self ):
+ return self.datatype.set_multi_byte_peek( self )
def init_meta( self, copy_from=None ):
return self.datatype.init_meta( self, copy_from=copy_from )
def set_meta( self, **kwd ):
diff -r affd3085eee3 -r 02843f56b812 lib/galaxy/tools/actions/upload.py
--- a/lib/galaxy/tools/actions/upload.py Fri Mar 20 02:49:30 2009 -0400
+++ b/lib/galaxy/tools/actions/upload.py Wed Mar 25 11:51:30 2009 -0400
@@ -23,6 +23,7 @@
file_type = incoming['file_type']
dbkey = incoming['dbkey']
url_paste = incoming['url_paste']
+ is_multi_byte = False
space_to_tab = False
if 'space_to_tab' in incoming:
if incoming['space_to_tab'] not in ["None", None]:
@@ -49,7 +50,7 @@
file_name = file_name.split( '\\' )[-1]
file_name = file_name.split( '/' )[-1]
try:
- data_list.append( self.add_file( trans, data_file.local_filename, file_name, file_type, dbkey, space_to_tab=space_to_tab ) )
+ data_list.append( self.add_file( trans, data_file.local_filename, file_name, file_type, is_multi_byte, dbkey, space_to_tab=space_to_tab ) )
except Exception, e:
log.exception( 'exception in add_file using datafile.local_filename %s: %s' % ( data_file.local_filename, str( e ) ) )
self.remove_tempfile( data_file.local_filename )
@@ -59,13 +60,13 @@
file_name = file_name.split( '\\' )[-1]
file_name = file_name.split( '/' )[-1]
try:
- temp_name = sniff.stream_to_file( data_file.file, prefix='upload' )
+ temp_name, is_multi_byte = sniff.stream_to_file( data_file.file, prefix='upload' )
except Exception, e:
log.exception( 'exception in sniff.stream_to_file using file %s: %s' % ( data_file.filename, str( e ) ) )
self.remove_tempfile( temp_name )
return self.upload_empty( trans, job, "Error:", str( e ) )
try:
- data_list.append( self.add_file( trans, temp_name, file_name, file_type, dbkey, space_to_tab=space_to_tab ) )
+ data_list.append( self.add_file( trans, temp_name, file_name, file_type, is_multi_byte, dbkey, space_to_tab=space_to_tab ) )
except Exception, e:
log.exception( 'exception in add_file using file temp_name %s: %s' % ( str( temp_name ), str( e ) ) )
self.remove_tempfile( temp_name )
@@ -77,13 +78,13 @@
line = line.rstrip( '\r\n' )
if line:
try:
- temp_name = sniff.stream_to_file( urllib.urlopen( line ), prefix='url_paste' )
+ temp_name, is_multi_byte = sniff.stream_to_file( urllib.urlopen( line ), prefix='url_paste' )
except Exception, e:
log.exception( 'exception in sniff.stream_to_file using url_paste %s: %s' % ( url_paste, str( e ) ) )
self.remove_tempfile( temp_name )
return self.upload_empty( trans, job, "Error:", str( e ) )
try:
- data_list.append( self.add_file( trans, temp_name, line, file_type, dbkey, info="uploaded url", space_to_tab=space_to_tab ) )
+ data_list.append( self.add_file( trans, temp_name, line, file_type, is_multi_byte, dbkey, info="uploaded url", space_to_tab=space_to_tab ) )
except Exception, e:
log.exception( 'exception in add_file using url_paste temp_name %s: %s' % ( str( temp_name ), str( e ) ) )
self.remove_tempfile( temp_name )
@@ -97,13 +98,13 @@
break
if is_valid:
try:
- temp_name = sniff.stream_to_file( StringIO.StringIO( url_paste ), prefix='strio_url_paste' )
+ temp_name, is_multi_byte = sniff.stream_to_file( StringIO.StringIO( url_paste ), prefix='strio_url_paste' )
except Exception, e:
log.exception( 'exception in sniff.stream_to_file using StringIO.StringIO( url_paste ) %s: %s' % ( url_paste, str( e ) ) )
self.remove_tempfile( temp_name )
return self.upload_empty( trans, job, "Error:", str( e ) )
try:
- data_list.append( self.add_file( trans, temp_name, 'Pasted Entry', file_type, dbkey, info="pasted entry", space_to_tab=space_to_tab ) )
+ data_list.append( self.add_file( trans, temp_name, 'Pasted Entry', file_type, is_multi_byte, dbkey, info="pasted entry", space_to_tab=space_to_tab ) )
except Exception, e:
log.exception( 'exception in add_file using StringIO.StringIO( url_paste ) temp_name %s: %s' % ( str( temp_name ), str( e ) ) )
self.remove_tempfile( temp_name )
@@ -144,85 +145,87 @@
trans.log_event( 'job id %d ended with errors, err_msg: %s' % ( job.id, err_msg ), tool_id=job.tool_id )
return dict( output=data )
- def add_file( self, trans, temp_name, file_name, file_type, dbkey, info=None, space_to_tab=False ):
+ def add_file( self, trans, temp_name, file_name, file_type, is_multi_byte, dbkey, info=None, space_to_tab=False ):
data_type = None
+ ext = ''
# See if we have an empty file
if not os.path.getsize( temp_name ) > 0:
raise BadFileException( "you attempted to upload an empty file." )
- # See if we have a gzipped file, which, if it passes our restrictions,
- # we'll decompress on the fly.
- is_gzipped, is_valid = self.check_gzip( temp_name )
- if is_gzipped and not is_valid:
- raise BadFileException( "you attempted to upload an inappropriate file." )
- elif is_gzipped and is_valid:
- #We need to decompress the temp_name file
- CHUNK_SIZE = 2**20 # 1Mb
- fd, uncompressed = tempfile.mkstemp()
- gzipped_file = gzip.GzipFile( temp_name )
- while 1:
- try:
- chunk = gzipped_file.read( CHUNK_SIZE )
- except IOError:
+ if is_multi_byte:
+ ext = sniff.guess_ext( temp_name, is_multi_byte=True )
+ else:
+ if not data_type:
+ # See if we have a gzipped file, which, if it passes our restrictions,
+ # we'll decompress on the fly.
+ is_gzipped, is_valid = self.check_gzip( temp_name )
+ if is_gzipped and not is_valid:
+ raise BadFileException( "you attempted to upload an inappropriate file." )
+ elif is_gzipped and is_valid:
+ #We need to decompress the temp_name file
+ CHUNK_SIZE = 2**20 # 1Mb
+ fd, uncompressed = tempfile.mkstemp()
+ gzipped_file = gzip.GzipFile( temp_name )
+ while 1:
+ try:
+ chunk = gzipped_file.read( CHUNK_SIZE )
+ except IOError:
+ os.close( fd )
+ os.remove( uncompressed )
+ raise BadFileException( 'problem decompressing gzipped data.' )
+ if not chunk:
+ break
+ os.write( fd, chunk.encode( "utf-8" ) )
os.close( fd )
- os.remove( uncompressed )
- raise BadFileException( 'problem decompressing gzipped data.' )
- if not chunk:
- break
- os.write( fd, chunk )
- os.close( fd )
- gzipped_file.close()
- # Replace the gzipped file with the decompressed file
- shutil.move( uncompressed, temp_name )
- file_name = file_name.rstrip( '.gz' )
- data_type = 'gzip'
- ext = ''
- if not data_type:
- # See if we have a zip archive
- is_zipped, is_valid, test_ext = self.check_zip( temp_name )
- if is_zipped and not is_valid:
- raise BadFileException( "you attempted to upload an inappropriate file." )
- elif is_zipped and is_valid:
- # Currently, we force specific tools to handle this case. We also require the user
- # to manually set the incoming file_type
- if ( test_ext == 'ab1' or test_ext == 'scf' ) and file_type != 'binseq.zip':
- raise BadFileException( "Invalid 'File Format' for archive consisting of binary files - use 'Binseq.zip'." )
- elif test_ext == 'txt' and file_type != 'txtseq.zip':
- raise BadFileException( "Invalid 'File Format' for archive consisting of text files - use 'Txtseq.zip'." )
- if not ( file_type == 'binseq.zip' or file_type == 'txtseq.zip' ):
- raise BadFileException( "you must manually set the 'File Format' to either 'Binseq.zip' or 'Txtseq.zip' when uploading zip files." )
- data_type = 'zip'
- ext = file_type
- if not data_type:
- if self.check_binary( temp_name ):
- parts = file_name.split( "." )
- if len( parts ) > 1:
- ext = parts[1].strip().lower()
- if not( ext == 'ab1' or ext == 'scf' ):
- raise BadFileException( "you attempted to upload an inappropriate file." )
- if ext == 'ab1' and file_type != 'ab1':
- raise BadFileException( "you must manually set the 'File Format' to 'Ab1' when uploading ab1 files." )
- elif ext == 'scf' and file_type != 'scf':
- raise BadFileException( "you must manually set the 'File Format' to 'Scf' when uploading scf files." )
- data_type = 'binary'
- if not data_type:
- # We must have a text file
- if self.check_html( temp_name ):
- raise BadFileException( "you attempted to upload an inappropriate file." )
- if data_type != 'binary' and data_type != 'zip':
- if space_to_tab:
- self.line_count = sniff.convert_newlines_sep2tabs( temp_name )
- else:
- self.line_count = sniff.convert_newlines( temp_name )
- if file_type == 'auto':
- ext = sniff.guess_ext( temp_name, sniff_order=trans.app.datatypes_registry.sniff_order )
- else:
- ext = file_type
- data_type = ext
-
+ gzipped_file.close()
+ # Replace the gzipped file with the decompressed file
+ shutil.move( uncompressed, temp_name )
+ file_name = file_name.rstrip( '.gz' )
+ data_type = 'gzip'
+ if not data_type:
+ # See if we have a zip archive
+ is_zipped, is_valid, test_ext = self.check_zip( temp_name )
+ if is_zipped and not is_valid:
+ raise BadFileException( "you attempted to upload an inappropriate file." )
+ elif is_zipped and is_valid:
+ # Currently, we force specific tools to handle this case. We also require the user
+ # to manually set the incoming file_type
+ if ( test_ext == 'ab1' or test_ext == 'scf' ) and file_type != 'binseq.zip':
+ raise BadFileException( "Invalid 'File Format' for archive consisting of binary files - use 'Binseq.zip'." )
+ elif test_ext == 'txt' and file_type != 'txtseq.zip':
+ raise BadFileException( "Invalid 'File Format' for archive consisting of text files - use 'Txtseq.zip'." )
+ if not ( file_type == 'binseq.zip' or file_type == 'txtseq.zip' ):
+ raise BadFileException( "you must manually set the 'File Format' to either 'Binseq.zip' or 'Txtseq.zip' when uploading zip files." )
+ data_type = 'zip'
+ ext = file_type
+ if not data_type:
+ if self.check_binary( temp_name ):
+ parts = file_name.split( "." )
+ if len( parts ) > 1:
+ ext = parts[1].strip().lower()
+ if not( ext == 'ab1' or ext == 'scf' ):
+ raise BadFileException( "you attempted to upload an inappropriate file." )
+ if ext == 'ab1' and file_type != 'ab1':
+ raise BadFileException( "you must manually set the 'File Format' to 'Ab1' when uploading ab1 files." )
+ elif ext == 'scf' and file_type != 'scf':
+ raise BadFileException( "you must manually set the 'File Format' to 'Scf' when uploading scf files." )
+ data_type = 'binary'
+ if not data_type:
+ # We must have a text file
+ if self.check_html( temp_name ):
+ raise BadFileException( "you attempted to upload an inappropriate file." )
+ if data_type != 'binary' and data_type != 'zip':
+ if space_to_tab:
+ self.line_count = sniff.convert_newlines_sep2tabs( temp_name )
+ else:
+ self.line_count = sniff.convert_newlines( temp_name )
+ if file_type == 'auto':
+ ext = sniff.guess_ext( temp_name, sniff_order=trans.app.datatypes_registry.sniff_order )
+ else:
+ ext = file_type
+ data_type = ext
if info is None:
info = 'uploaded %s file' %data_type
-
- data = trans.app.model.HistoryDatasetAssociation( history = trans.history, extension = ext, create_dataset = True )
+ data = trans.app.model.HistoryDatasetAssociation( history=trans.history, extension=ext, create_dataset=True )
data.name = file_name
data.dbkey = dbkey
data.info = info
@@ -233,19 +236,25 @@
data.init_meta()
if self.line_count is not None:
try:
- data.set_peek( line_count=self.line_count )
+ if is_multi_byte:
+ data.set_multi_byte_peek( line_count=self.line_count )
+ else:
+ data.set_peek( line_count=self.line_count )
except:
+ if is_multi_byte:
+ data.set_multi_byte_peek()
+ else:
+ data.set_peek()
+ else:
+ if is_multi_byte:
+ data.set_multi_byte_peek()
+ else:
data.set_peek()
- else:
- data.set_peek()
-
- # validate incomming data
- """
- Commented by greg on 3/14/07
- for error in data.datatype.validate( data ):
- data.add_validation_error(
- model.ValidationError( message=str( error ), err_type=error.__class__.__name__, attributes=util.object_to_string( error.__dict__ ) ) )
- """
+ # validate incoming data
+ # Commented by greg on 3/14/07
+ # for error in data.datatype.validate( data ):
+ # data.add_validation_error(
+ # model.ValidationError( message=str( error ), err_type=error.__class__.__name__, attributes=util.object_to_string( error.__dict__ ) ) )
if data.missing_meta():
data.datatype.set_meta( data )
dbkey_to_store = dbkey
@@ -319,6 +328,8 @@
lineno += 1
line = line.strip()
if line:
+ if util.is_multi_byte( line ):
+ return False
for char in line:
if ord( char ) > 128:
if chunk is None:
diff -r affd3085eee3 -r 02843f56b812 lib/galaxy/util/__init__.py
--- a/lib/galaxy/util/__init__.py Fri Mar 20 02:49:30 2009 -0400
+++ b/lib/galaxy/util/__init__.py Wed Mar 25 11:51:30 2009 -0400
@@ -14,10 +14,33 @@
pkg_resources.require( 'elementtree' )
from elementtree import ElementTree
+pkg_resources.require( "wchartype" )
+import wchartype
+
log = logging.getLogger(__name__)
_lock = threading.RLock()
gzip_magic = '\037\213'
+
+def is_multi_byte( chars ):
+ for char in chars:
+ try:
+ char = unicode( char )
+ except Exception, e:
+ # Probably binary
+ log.exception( e )
+ return False
+ if wchartype.is_asian( char ) or \
+ wchartype.is_full_width( char ) or \
+ wchartype.is_kanji( char ) or \
+ wchartype.is_hiragana( char ) or \
+ wchartype.is_katakana( char ) or \
+ wchartype.is_half_katakana( char ) or \
+ wchartype.is_hangul( char ) or \
+ wchartype.is_full_digit( char ) or \
+ wchartype.is_full_letter( char ):
+ return True
+ return False
def synchronized(func):
"""This wrapper will serialize access to 'func' to a single thread. Use it as a decorator."""
diff -r affd3085eee3 -r 02843f56b812 lib/galaxy/web/framework/__init__.py
--- a/lib/galaxy/web/framework/__init__.py Fri Mar 20 02:49:30 2009 -0400
+++ b/lib/galaxy/web/framework/__init__.py Wed Mar 25 11:51:30 2009 -0400
@@ -466,8 +466,7 @@
return self.fill_template_mako( filename, **kwargs )
else:
template = Template( file=os.path.join(self.app.config.template_path, filename),
- searchList=[kwargs, self.template_context, dict(caller=self, t=self, h=webhelpers, util=util, request=self.request, response=self.response, app=self.app)],
- output_encoding='utf-8' )
+ searchList=[kwargs, self.template_context, dict(caller=self, t=self, h=webhelpers, util=util, request=self.request, response=self.response, app=self.app)] )
return str( template )
def fill_template_mako( self, filename, **kwargs ):
template = self.webapp.mako_template_lookup.get_template( filename )
@@ -481,8 +480,7 @@
Fill in a template, putting any keyword arguments on the context.
"""
template = Template( source=template_string,
- searchList=[context or kwargs, dict(caller=self)],
- output_encoding='utf-8' )
+ searchList=[context or kwargs, dict(caller=self)] )
return str(template)
class FormBuilder( object ):
1
0
20 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/affd3085eee3
changeset: 1741:affd3085eee3
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Fri Mar 20 02:49:30 2009 -0400
description:
Fixes for i18n support - all charsets set to utf-8, now able to paste multi-byte chars in upload form, templates use utf-8 as output_charset, other miscellaneous fixes.
21 file(s) affected in this change:
lib/galaxy/datatypes/sniff.py
lib/galaxy/tools/actions/upload.py
lib/galaxy/util/__init__.py
lib/galaxy/web/controllers/ucsc_proxy.py
lib/galaxy/web/framework/__init__.py
lib/galaxy/web/framework/base.py
lib/galaxy/webapps/reports/templates/base_panels.mako
lib/galaxy/webapps/reports/templates/masthead.mako
scripts/paster.py
templates/base.mako
templates/base_panels.mako
templates/dataset/errors.tmpl
templates/dataset/validation.tmpl
templates/root/history.mako
templates/root/masthead.mako
templates/root/tool_menu.mako
templates/tool_executed.mako
templates/tool_form.mako
templates/workflow/build_from_current_history.mako
tools/data_source/wormbase.xml
tools/data_source/wormbase_test.xml
diffs (440 lines):
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/datatypes/sniff.py
--- a/lib/galaxy/datatypes/sniff.py Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/datatypes/sniff.py Fri Mar 20 02:49:30 2009 -0400
@@ -21,7 +21,8 @@
chunk = stream.read(1048576)
if not chunk:
break
- os.write(fd, chunk)
+ # TODO: does this work on binary files?
+ os.write( fd, chunk.encode( "utf-8" ) )
os.close(fd)
return temp_name
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/tools/actions/upload.py
--- a/lib/galaxy/tools/actions/upload.py Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/tools/actions/upload.py Fri Mar 20 02:49:30 2009 -0400
@@ -105,7 +105,7 @@
try:
data_list.append( self.add_file( trans, temp_name, 'Pasted Entry', file_type, dbkey, info="pasted entry", space_to_tab=space_to_tab ) )
except Exception, e:
- log.excception( 'exception in add_file using StringIO.StringIO( url_paste ) temp_name %s: %s' % ( str( temp_name ), str( e ) ) )
+ log.exception( 'exception in add_file using StringIO.StringIO( url_paste ) temp_name %s: %s' % ( str( temp_name ), str( e ) ) )
self.remove_tempfile( temp_name )
return self.upload_empty( trans, job, "Error:", str( e ) )
else:
@@ -146,12 +146,11 @@
def add_file( self, trans, temp_name, file_name, file_type, dbkey, info=None, space_to_tab=False ):
data_type = None
-
# See if we have an empty file
if not os.path.getsize( temp_name ) > 0:
raise BadFileException( "you attempted to upload an empty file." )
-
- # See if we have a gzipped file, which, if it passes our restrictions, we'll decompress on the fly.
+ # See if we have a gzipped file, which, if it passes our restrictions,
+ # we'll decompress on the fly.
is_gzipped, is_valid = self.check_gzip( temp_name )
if is_gzipped and not is_valid:
raise BadFileException( "you attempted to upload an inappropriate file." )
@@ -176,7 +175,7 @@
shutil.move( uncompressed, temp_name )
file_name = file_name.rstrip( '.gz' )
data_type = 'gzip'
-
+ ext = ''
if not data_type:
# See if we have a zip archive
is_zipped, is_valid, test_ext = self.check_zip( temp_name )
@@ -193,30 +192,28 @@
raise BadFileException( "you must manually set the 'File Format' to either 'Binseq.zip' or 'Txtseq.zip' when uploading zip files." )
data_type = 'zip'
ext = file_type
-
if not data_type:
if self.check_binary( temp_name ):
- ext = file_name.split( "." )[1].strip().lower()
- if not( ext == 'ab1' or ext == 'scf' ):
- raise BadFileException( "you attempted to upload an inappropriate file." )
- if ext == 'ab1' and file_type != 'ab1':
- raise BadFileException( "you must manually set the 'File Format' to 'Ab1' when uploading ab1 files." )
- elif ext == 'scf' and file_type != 'scf':
- raise BadFileException( "you must manually set the 'File Format' to 'Scf' when uploading scf files." )
+ parts = file_name.split( "." )
+ if len( parts ) > 1:
+ ext = parts[1].strip().lower()
+ if not( ext == 'ab1' or ext == 'scf' ):
+ raise BadFileException( "you attempted to upload an inappropriate file." )
+ if ext == 'ab1' and file_type != 'ab1':
+ raise BadFileException( "you must manually set the 'File Format' to 'Ab1' when uploading ab1 files." )
+ elif ext == 'scf' and file_type != 'scf':
+ raise BadFileException( "you must manually set the 'File Format' to 'Scf' when uploading scf files." )
data_type = 'binary'
-
if not data_type:
# We must have a text file
if self.check_html( temp_name ):
raise BadFileException( "you attempted to upload an inappropriate file." )
-
if data_type != 'binary' and data_type != 'zip':
if space_to_tab:
self.line_count = sniff.convert_newlines_sep2tabs( temp_name )
else:
self.line_count = sniff.convert_newlines( temp_name )
if file_type == 'auto':
- log.debug("In upload, in if file_type == 'auto':")
ext = sniff.guess_ext( temp_name, sniff_order=trans.app.datatypes_registry.sniff_order )
else:
ext = file_type
@@ -312,7 +309,6 @@
if chunk is None:
temp.close()
return False
-
def check_binary( self, temp_name, chunk=None ):
if chunk is None:
temp = open( temp_name, "U" )
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/util/__init__.py
--- a/lib/galaxy/util/__init__.py Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/util/__init__.py Fri Mar 20 02:49:30 2009 -0400
@@ -107,9 +107,9 @@
def sanitize_param(value):
"""Clean incoming parameters (strings or lists)"""
- if type(value) == type('x'):
+ if isinstance( value, basestring ):
return sanitize_text(value)
- elif type(value) == type([]):
+ elif isinstance( value, list ):
return map(sanitize_text, value)
else:
raise Exception, 'Unknown parameter type'
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/web/controllers/ucsc_proxy.py
--- a/lib/galaxy/web/controllers/ucsc_proxy.py Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/web/controllers/ucsc_proxy.py Fri Mar 20 02:49:30 2009 -0400
@@ -121,7 +121,7 @@
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/static/style/base.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
function changeTarget(target)
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/web/framework/__init__.py
--- a/lib/galaxy/web/framework/__init__.py Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/web/framework/__init__.py Fri Mar 20 02:49:30 2009 -0400
@@ -87,7 +87,8 @@
self.mako_template_lookup = mako.lookup.TemplateLookup(
directories = [ galaxy_app.config.template_path ] ,
module_directory = galaxy_app.config.template_cache,
- collection_size = 500 )
+ collection_size = 500,
+ output_encoding = 'utf-8' )
# Security helper
self.security = galaxy_app.security
def handle_controller_exception( self, e, trans, **kwargs ):
@@ -131,7 +132,7 @@
# Default to English
locales = 'en'
t = Translations.load( dirname='locale', locales=locales, domain='ginga' )
- self.template_context.update ( dict( _=t.gettext, n_=t.gettext, N_=t.ngettext ) )
+ self.template_context.update ( dict( _=t.ugettext, n_=t.ugettext, N_=t.ungettext ) )
@property
def sa_session( self ):
"""
@@ -465,10 +466,12 @@
return self.fill_template_mako( filename, **kwargs )
else:
template = Template( file=os.path.join(self.app.config.template_path, filename),
- searchList=[kwargs, self.template_context, dict(caller=self, t=self, h=webhelpers, util=util, request=self.request, response=self.response, app=self.app)] )
+ searchList=[kwargs, self.template_context, dict(caller=self, t=self, h=webhelpers, util=util, request=self.request, response=self.response, app=self.app)],
+ output_encoding='utf-8' )
return str( template )
def fill_template_mako( self, filename, **kwargs ):
template = self.webapp.mako_template_lookup.get_template( filename )
+ template.output_encoding = 'utf-8'
data = dict( caller=self, t=self, trans=self, h=webhelpers, util=util, request=self.request, response=self.response, app=self.app )
data.update( self.template_context )
data.update( kwargs )
@@ -477,7 +480,9 @@
"""
Fill in a template, putting any keyword arguments on the context.
"""
- template = Template( source=template_string, searchList=[context or kwargs, dict(caller=self)] )
+ template = Template( source=template_string,
+ searchList=[context or kwargs, dict(caller=self)],
+ output_encoding='utf-8' )
return str(template)
class FormBuilder( object ):
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/web/framework/base.py
--- a/lib/galaxy/web/framework/base.py Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/web/framework/base.py Fri Mar 20 02:49:30 2009 -0400
@@ -14,8 +14,10 @@
pkg_resources.require( "Paste" )
pkg_resources.require( "Routes" )
pkg_resources.require( "flup" )
+pkg_resources.require( "WebOb" )
import routes
+import webob
# We will use some very basic HTTP/wsgi utilities from the paste library
from paste.request import parse_headers, get_cookies, parse_formvars
@@ -212,7 +214,7 @@
else:
return None
-class Request( object ):
+class Request( webob.Request ):
"""
Encapsulates an HTTP request.
"""
@@ -220,26 +222,24 @@
"""
Create a new request wrapping the WSGI environment `environ`
"""
- self.environ = environ
+ ## self.environ = environ
+ webob.Request.__init__( self, environ, charset='utf-8', decode_param_names=False )
# Properties that are computed and cached on first use
@lazy_property
def remote_host( self ):
try:
- return socket.gethostbyname( self.environ['REMOTE_ADDR'] )
+ return socket.gethostbyname( self.remote_addr )
except socket.error:
- return self.environ['REMOTE_ADDR']
- @lazy_property
- def headers( self ):
- return dict( parse_headers( self.environ ) )
+ return self.remote_addr
@lazy_property
def cookies( self ):
return get_cookies( self.environ )
@lazy_property
def base( self ):
- return ( self.scheme + "://" + self.environ['HTTP_HOST'] )
- @lazy_property
- def params( self ):
- return parse_formvars( self.environ )
+ return ( self.scheme + "://" + self.host )
+ ## @lazy_property
+ ## def params( self ):
+ ## return parse_formvars( self.environ )
@lazy_property
def path( self ):
return self.environ['SCRIPT_NAME'] + self.environ['PATH_INFO']
@@ -247,15 +247,15 @@
def browser_url( self ):
return self.base + self.path
# Descriptors that map properties to the associated environment
- scheme = WSGIEnvironmentProperty( 'wsgi.url_scheme' )
- remote_addr = WSGIEnvironmentProperty( 'REMOTE_ADDR' )
+ ## scheme = WSGIEnvironmentProperty( 'wsgi.url_scheme' )
+ ## remote_addr = WSGIEnvironmentProperty( 'REMOTE_ADDR' )
remote_port = WSGIEnvironmentProperty( 'REMOTE_PORT' )
- method = WSGIEnvironmentProperty( 'REQUEST_METHOD' )
- script_name = WSGIEnvironmentProperty( 'SCRIPT_NAME' )
+ ## method = WSGIEnvironmentProperty( 'REQUEST_METHOD' )
+ ## script_name = WSGIEnvironmentProperty( 'SCRIPT_NAME' )
protocol = WSGIEnvironmentProperty( 'SERVER_PROTOCOL' )
- query_string = WSGIEnvironmentProperty( 'QUERY_STRING' )
- path_info = WSGIEnvironmentProperty( 'PATH_INFO' )
-
+ ## query_string = WSGIEnvironmentProperty( 'QUERY_STRING' )
+ ## path_info = WSGIEnvironmentProperty( 'PATH_INFO' )
+
class Response( object ):
"""
Describes an HTTP response. Currently very simple since the actual body
@@ -298,7 +298,7 @@
return "%d %s" % ( exception.code, exception.title )
else:
return self.status
-
+
# ---- Utilities ------------------------------------------------------------
CHUNK_SIZE = 2**16
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/webapps/reports/templates/base_panels.mako
--- a/lib/galaxy/webapps/reports/templates/base_panels.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/webapps/reports/templates/base_panels.mako Fri Mar 20 02:49:30 2009 -0400
@@ -31,7 +31,7 @@
<html lang="en">
<head>
<title>${self.title()}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
${self.javascripts()}
${self.stylesheets()}
</head>
diff -r a5a995ca3abc -r affd3085eee3 lib/galaxy/webapps/reports/templates/masthead.mako
--- a/lib/galaxy/webapps/reports/templates/masthead.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/lib/galaxy/webapps/reports/templates/masthead.mako Fri Mar 20 02:49:30 2009 -0400
@@ -2,7 +2,7 @@
<html>
<head>
<title>Galaxy</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/masthead.css')}" rel="stylesheet" type="text/css" />
</head>
diff -r a5a995ca3abc -r affd3085eee3 scripts/paster.py
--- a/scripts/paster.py Thu Mar 19 21:41:06 2009 -0400
+++ b/scripts/paster.py Fri Mar 20 02:49:30 2009 -0400
@@ -7,7 +7,6 @@
import os, sys
-sys.setdefaultencoding( 'utf_8' )
assert sys.version_info[:2] >= ( 2, 4 )
new_path = [ os.path.join( os.getcwd(), "lib" ) ]
diff -r a5a995ca3abc -r affd3085eee3 templates/base.mako
--- a/templates/base.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/base.mako Fri Mar 20 02:49:30 2009 -0400
@@ -4,7 +4,7 @@
<head>
<title>a ${self.title()}</title>
-<meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
${self.stylesheets()}
${self.javascripts()}
</head>
diff -r a5a995ca3abc -r affd3085eee3 templates/base_panels.mako
--- a/templates/base_panels.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/base_panels.mako Fri Mar 20 02:49:30 2009 -0400
@@ -42,7 +42,7 @@
<html>
<head>
<title>${self.title()}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
${self.javascripts()}
${self.stylesheets()}
</head>
diff -r a5a995ca3abc -r affd3085eee3 templates/dataset/errors.tmpl
--- a/templates/dataset/errors.tmpl Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/dataset/errors.tmpl Fri Mar 20 02:49:30 2009 -0400
@@ -2,7 +2,7 @@
<html>
<head>
<title>Dataset generation errors</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/static/style/base.css" rel="stylesheet" type="text/css" />
<style>
pre
diff -r a5a995ca3abc -r affd3085eee3 templates/dataset/validation.tmpl
--- a/templates/dataset/validation.tmpl Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/dataset/validation.tmpl Fri Mar 20 02:49:30 2009 -0400
@@ -3,7 +3,7 @@
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/static/style/base.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/static/universe.js">var dummy1=0;</script>
</head>
diff -r a5a995ca3abc -r affd3085eee3 templates/root/history.mako
--- a/templates/root/history.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/root/history.mako Fri Mar 20 02:49:30 2009 -0400
@@ -11,7 +11,7 @@
<!-- running: do not change this comment, used by TwillTestCase.wait -->
%endif
-<meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache">
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/history.css')}" rel="stylesheet" type="text/css" />
diff -r a5a995ca3abc -r affd3085eee3 templates/root/masthead.mako
--- a/templates/root/masthead.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/root/masthead.mako Fri Mar 20 02:49:30 2009 -0400
@@ -5,7 +5,7 @@
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/masthead.css')}" rel="stylesheet" type="text/css" />
</head>
diff -r a5a995ca3abc -r affd3085eee3 templates/root/tool_menu.mako
--- a/templates/root/tool_menu.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/root/tool_menu.mako Fri Mar 20 02:49:30 2009 -0400
@@ -49,7 +49,7 @@
<html>
<head>
<title>${_('Galaxy Tools')}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/tool_menu.css')}" rel="stylesheet" type="text/css" />
diff -r a5a995ca3abc -r affd3085eee3 templates/tool_executed.mako
--- a/templates/tool_executed.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/tool_executed.mako Fri Mar 20 02:49:30 2009 -0400
@@ -3,7 +3,7 @@
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var inside_galaxy_frameset = false;
diff -r a5a995ca3abc -r affd3085eee3 templates/tool_form.mako
--- a/templates/tool_form.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/tool_form.mako Fri Mar 20 02:49:30 2009 -0400
@@ -9,7 +9,7 @@
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<script type='text/javascript' src="${h.url_for('/static/scripts/jquery.js')}"> </script>
<script type="text/javascript">
diff -r a5a995ca3abc -r affd3085eee3 templates/workflow/build_from_current_history.mako
--- a/templates/workflow/build_from_current_history.mako Thu Mar 19 21:41:06 2009 -0400
+++ b/templates/workflow/build_from_current_history.mako Fri Mar 20 02:49:30 2009 -0400
@@ -6,7 +6,7 @@
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="${h.url_for('/static/style/history.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
diff -r a5a995ca3abc -r affd3085eee3 tools/data_source/wormbase.xml
--- a/tools/data_source/wormbase.xml Thu Mar 19 21:41:06 2009 -0400
+++ b/tools/data_source/wormbase.xml Fri Mar 20 02:49:30 2009 -0400
@@ -2,7 +2,7 @@
<tool name="Wormbase" id="wormbase" tool_type="data_source" URL_method="post">
<description>server</description>
<command interpreter="python">data_source.py $output</command>
- <inputs action="http://www.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" method="get" target="_top">
+ <inputs action="http://www.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" target="_top">
<display>go to Wormbase server $GALAXY_URL</display>
<param name="GALAXY_URL" type="baseurl" value="/tool_runner?tool_id=wormbase" />
</inputs>
diff -r a5a995ca3abc -r affd3085eee3 tools/data_source/wormbase_test.xml
--- a/tools/data_source/wormbase_test.xml Thu Mar 19 21:41:06 2009 -0400
+++ b/tools/data_source/wormbase_test.xml Fri Mar 20 02:49:30 2009 -0400
@@ -2,7 +2,7 @@
<tool name="Wormbase" id="wormbase_test" tool_type="data_source" URL_method="post">
<description>test server</description>
<command interpreter="python">data_source.py $output</command>
- <inputs action="http://dev.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" method="get" target="_top">
+ <inputs action="http://dev.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" target="_top">
<display>go to Wormbase test server $GALAXY_URL</display>
<param name="GALAXY_URL" type="baseurl" value="/tool_runner?tool_id=wormbase_test" />
</inputs>
1
0
20 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/a5a995ca3abc
changeset: 1740:a5a995ca3abc
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Thu Mar 19 21:41:06 2009 -0400
description:
Fixes for wormbase tools, use post as http method rather than get.
3 file(s) affected in this change:
tools/data_source/wormbase.xml
tools/data_source/wormbase_test.xml
universe_wsgi.ini.sample
diffs (32 lines):
diff -r dc62ee52012e -r a5a995ca3abc tools/data_source/wormbase.xml
--- a/tools/data_source/wormbase.xml Tue Mar 17 22:46:47 2009 -0400
+++ b/tools/data_source/wormbase.xml Thu Mar 19 21:41:06 2009 -0400
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<tool name="Wormbase" id="wormbase" tool_type="data_source" URL_method="get">
+<tool name="Wormbase" id="wormbase" tool_type="data_source" URL_method="post">
<description>server</description>
<command interpreter="python">data_source.py $output</command>
<inputs action="http://www.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" method="get" target="_top">
diff -r dc62ee52012e -r a5a995ca3abc tools/data_source/wormbase_test.xml
--- a/tools/data_source/wormbase_test.xml Tue Mar 17 22:46:47 2009 -0400
+++ b/tools/data_source/wormbase_test.xml Thu Mar 19 21:41:06 2009 -0400
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<tool name="Wormbase" id="wormbase_test" tool_type="data_source" URL_method="get">
+<tool name="Wormbase" id="wormbase_test" tool_type="data_source" URL_method="post">
<description>test server</description>
<command interpreter="python">data_source.py $output</command>
<inputs action="http://dev.wormbase.org/db/seq/gbrowse/c_elegans/" check_values="false" method="get" target="_top">
diff -r dc62ee52012e -r a5a995ca3abc universe_wsgi.ini.sample
--- a/universe_wsgi.ini.sample Tue Mar 17 22:46:47 2009 -0400
+++ b/universe_wsgi.ini.sample Thu Mar 19 21:41:06 2009 -0400
@@ -115,7 +115,7 @@
# Comma separated list of UCSC / gbrowse browsers to use for viewing
ucsc_display_sites = main,test,archaea
-gbrowse_display_sites = elegans,flybase
+gbrowse_display_sites = c_elegans,c_briggsae,c_remanei,c_brenneri,c_japonica,p_pristionchus,b_malayi
# Serving static files (needed if running standalone)
static_enabled = True
1
0
18 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/dc62ee52012e
changeset: 1739:dc62ee52012e
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Tue Mar 17 22:46:47 2009 -0400
description:
Integrating i18n support provided by Mitsuteru Nakao, Takashi Hatakeyama, and Hideyuki Morita.
33 file(s) affected in this change:
eggs.ini
lib/galaxy/config.py
lib/galaxy/web/framework/__init__.py
locale/en/LC_MESSAGES/ginga.mo
locale/en/LC_MESSAGES/ginga.po
locale/en/LC_MESSAGES/tools.mo
locale/en/LC_MESSAGES/tools.po
locale/ginga.pot
locale/ja/LC_MESSAGES/ginga.mo
locale/ja/LC_MESSAGES/ginga.po
locale/ja/LC_MESSAGES/tools.mo
locale/ja/LC_MESSAGES/tools.po
locale/tools.pot
scripts/paster.py
templates/admin_main.mako
templates/base.mako
templates/base_panels.mako
templates/dataset/edit_attributes.mako
templates/form.mako
templates/history/list.mako
templates/history/options.mako
templates/history/rename.mako
templates/history/share.mako
templates/message.mako
templates/root/history.mako
templates/root/history_as_xml.mako
templates/root/history_common.mako
templates/root/index.mako
templates/root/masthead.mako
templates/root/tool_menu.mako
templates/user/index.mako
templates/workflow/build_from_current_history.mako
test/functional/__init__.py
diffs (2471 lines):
diff -r ab1b5bd846bc -r dc62ee52012e eggs.ini
--- a/eggs.ini Sun Mar 08 14:25:19 2009 -0400
+++ b/eggs.ini Tue Mar 17 22:46:47 2009 -0400
@@ -47,6 +47,7 @@
WebHelpers = 0.2
WebOb = 0.8.5
wsgiref = 0.1.2
+Babel = 0.9.4
; extra version information
[tags]
@@ -92,3 +93,4 @@
WebHelpers = http://pypi.python.org/packages/source/W/WebHelpers/WebHelpers-0.2.tar.gz
WebOb = http://pypi.python.org/packages/source/W/WebOb/WebOb-0.8.5.tar.gz
wsgiref = http://pypi.python.org/packages/source/w/wsgiref/wsgiref-0.1.2.zip
+Babel = http://ftp.edgewall.com/pub/babel/Babel-0.9.4.zip
diff -r ab1b5bd846bc -r dc62ee52012e lib/galaxy/config.py
--- a/lib/galaxy/config.py Sun Mar 08 14:25:19 2009 -0400
+++ b/lib/galaxy/config.py Tue Mar 17 22:46:47 2009 -0400
@@ -165,5 +165,3 @@
# Hook everything up
handler.setFormatter( formatter )
root.addHandler( handler )
-
-
diff -r ab1b5bd846bc -r dc62ee52012e lib/galaxy/web/framework/__init__.py
--- a/lib/galaxy/web/framework/__init__.py Sun Mar 08 14:25:19 2009 -0400
+++ b/lib/galaxy/web/framework/__init__.py Tue Mar 17 22:46:47 2009 -0400
@@ -23,6 +23,9 @@
pkg_resources.require( "Mako" )
import mako.template
import mako.lookup
+
+pkg_resources.require( "Babel" )
+from babel.support import Translations
pkg_resources.require( "SQLAlchemy >= 0.4" )
from sqlalchemy import and_
@@ -110,6 +113,7 @@
self.__history = NOT_SET
self.__galaxy_session = NOT_SET
base.DefaultWebTransaction.__init__( self, environ )
+ self.setup_i18n()
self.sa_session.clear()
self.debug = asbool( self.app.config.get( 'debug', False ) )
# Flag indicating whether we are in workflow building mode (means
@@ -118,6 +122,16 @@
self.workflow_building_mode = False
# Always have a valid galaxy session
self.__ensure_valid_session( session_cookie )
+ def setup_i18n( self ):
+ if 'HTTP_ACCEPT_LANGUAGE' in self.environ:
+ # locales looks something like: ['en', 'en-us;q=0.7', 'ja;q=0.3']
+ locales = self.environ['HTTP_ACCEPT_LANGUAGE'].split( ',' )
+ locales = [ l.split( ';' )[0] for l in locales ]
+ else:
+ # Default to English
+ locales = 'en'
+ t = Translations.load( dirname='locale', locales=locales, domain='ginga' )
+ self.template_context.update ( dict( _=t.gettext, n_=t.gettext, N_=t.ngettext ) )
@property
def sa_session( self ):
"""
diff -r ab1b5bd846bc -r dc62ee52012e locale/en/LC_MESSAGES/ginga.mo
Binary file locale/en/LC_MESSAGES/ginga.mo has changed
diff -r ab1b5bd846bc -r dc62ee52012e locale/en/LC_MESSAGES/ginga.po
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locale/en/LC_MESSAGES/ginga.po Tue Mar 17 22:46:47 2009 -0400
@@ -0,0 +1,299 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-21 18:33+0900\n"
+"PO-Revision-Date: 2009-03-17 03:55-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: en <LL(a)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.4\n"
+
+#: templates/history/options.mako:17
+msgid " a new empty history"
+msgstr ""
+
+#: templates/history/options.mako:22 templates/history/options.mako:24
+msgid " current history"
+msgstr ""
+
+#: templates/history/options.mako:14
+#, python-format
+msgid " current history (stored as \"%s\")"
+msgstr ""
+
+#: templates/history/options.mako:20
+msgid " from the current history"
+msgstr ""
+
+#: templates/history/options.mako:15
+msgid " previously stored histories"
+msgstr ""
+
+#: templates/history/options.mako:8
+msgid " to store or switch histories."
+msgstr ""
+
+#: templates/user/index.mako:9 templates/user/index.mako:11
+msgid "Account settings"
+msgstr ""
+
+#: templates/root/masthead.mako:39
+msgid "Account: "
+msgstr ""
+
+#: templates/admin_main.mako:16
+msgid "Admin password: "
+msgstr ""
+
+#: templates/root/history_common.mako:41
+msgid "An error occurred running this job: "
+msgstr ""
+
+#: templates/history/options.mako:24
+msgid "Are you sure you want to delete the current history?"
+msgstr ""
+
+#: templates/user/index.mako:16
+msgid "Change your password"
+msgstr ""
+
+#: templates/history/options.mako:20
+msgid "Construct workflow"
+msgstr ""
+
+#: templates/history/options.mako:17
+msgid "Create"
+msgstr ""
+
+#: templates/user/index.mako:24
+msgid "Create new account"
+msgstr ""
+
+#: templates/history/rename.mako:9
+msgid "Current Name"
+msgstr ""
+
+#: templates/history/options.mako:24
+msgid "Delete"
+msgstr ""
+
+#: templates/history/share.mako:23
+msgid "Email of User to share with:"
+msgstr ""
+
+#: templates/root/history_common.mako:76
+#, python-format
+msgid "Error: unknown dataset state \"%s\"."
+msgstr ""
+
+#: templates/admin_main.mako:2 templates/admin_main.mako:7
+msgid "Galaxy Administration"
+msgstr ""
+
+#: templates/root/history.mako:12
+msgid "Galaxy History"
+msgstr ""
+
+#: templates/root/tool_menu.mako:11
+msgid "Galaxy Tools"
+msgstr ""
+
+#: templates/root/index.mako:34
+msgid "History"
+msgstr ""
+
+#: templates/history/share.mako:8
+msgid "History Name:"
+msgstr ""
+
+#: templates/history/options.mako:4
+msgid "History Options"
+msgstr ""
+
+#: templates/root/history_common.mako:57 templates/root/masthead.mako:25
+msgid "Info: "
+msgstr ""
+
+#: templates/root/history_common.mako:38
+msgid "Job is currently running"
+msgstr ""
+
+#: templates/root/history_common.mako:36
+msgid "Job is waiting to run"
+msgstr ""
+
+#: templates/history/options.mako:15
+msgid "List"
+msgstr ""
+
+#: templates/root/masthead.mako:36
+#, python-format
+msgid "Logged in as %s: "
+msgstr ""
+
+#: templates/user/index.mako:23
+msgid "Login"
+msgstr ""
+
+#: templates/user/index.mako:18
+msgid "Logout"
+msgstr ""
+
+#: templates/root/tool_menu.mako:100
+msgid "Manage"
+msgstr ""
+
+#: templates/history/rename.mako:9
+msgid "New Name"
+msgstr ""
+
+#: templates/root/history_common.mako:45
+msgid "No data: "
+msgstr ""
+
+#: templates/history/share.mako:8
+msgid "Number of Datasets:"
+msgstr ""
+
+#: templates/root/index.mako:32
+msgid "Options"
+msgstr ""
+
+#: templates/admin_main.mako:27
+msgid "Reload"
+msgstr ""
+
+#: templates/admin_main.mako:18
+msgid "Reload tool: "
+msgstr ""
+
+#: templates/history/options.mako:14
+msgid "Rename"
+msgstr ""
+
+#: templates/history/rename.mako:2 templates/history/rename.mako:5
+msgid "Rename History"
+msgstr ""
+
+#: templates/history/options.mako:22
+msgid "Share"
+msgstr ""
+
+#: templates/history/share.mako:5
+msgid "Share Histories"
+msgstr ""
+
+#: templates/history/share.mako:8
+msgid "Share Link"
+msgstr ""
+
+#: templates/history/share.mako:2
+msgid "Share histories"
+msgstr ""
+
+#: templates/history/share.mako:14
+msgid "This history contains no data."
+msgstr ""
+
+#: templates/root/index.mako:5
+msgid "Tools"
+msgstr ""
+
+#: templates/user/index.mako:17
+msgid "Update your email address"
+msgstr ""
+
+#: templates/root/tool_menu.mako:95
+msgid "Workflow"
+msgstr ""
+
+#: templates/user/index.mako:14
+#, python-format
+msgid "You are currently logged in as %s."
+msgstr ""
+
+#: templates/user/index.mako:21
+msgid "You are currently not logged in."
+msgstr ""
+
+#: templates/root/history.mako:223
+msgid "You are currently viewing a deleted history!"
+msgstr ""
+
+#: templates/history/options.mako:8
+msgid "You must be "
+msgstr ""
+
+#: templates/root/history.mako:252
+msgid "Your history is empty. Click 'Get Data' on the left pane to start"
+msgstr ""
+
+#: templates/root/masthead.mako:28
+msgid "blog"
+msgstr ""
+
+#: templates/history/share.mako:20
+msgid "copy link to share"
+msgstr ""
+
+#: templates/root/masthead.mako:39
+msgid "create"
+msgstr ""
+
+#: templates/root/history_common.mako:50
+msgid "database: "
+msgstr ""
+
+#: templates/root/history_common.mako:49
+msgid "format: "
+msgstr ""
+
+#: templates/history/options.mako:8
+msgid "logged in"
+msgstr ""
+
+#: templates/root/masthead.mako:40
+msgid "login"
+msgstr ""
+
+#: templates/root/masthead.mako:37
+msgid "logout"
+msgstr ""
+
+#: templates/root/masthead.mako:36
+msgid "manage"
+msgstr ""
+
+#: templates/root/history.mako:218
+msgid "refresh"
+msgstr ""
+
+#: templates/root/masthead.mako:25
+msgid "report bugs"
+msgstr ""
+
+#: templates/root/history_common.mako:42
+msgid "report this error"
+msgstr ""
+
+#: templates/root/masthead.mako:27
+msgid "screencasts"
+msgstr ""
+
+#: templates/root/masthead.mako:26
+msgid "wiki"
+msgstr ""
+
+#: templates/root/tool_menu.mako:100
+msgid "workflows"
+msgstr ""
+
diff -r ab1b5bd846bc -r dc62ee52012e locale/en/LC_MESSAGES/tools.mo
Binary file locale/en/LC_MESSAGES/tools.mo has changed
diff -r ab1b5bd846bc -r dc62ee52012e locale/en/LC_MESSAGES/tools.po
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locale/en/LC_MESSAGES/tools.po Tue Mar 17 22:46:47 2009 -0400
@@ -0,0 +1,85 @@
+# English translations for PROJECT.
+# Copyright (C) 2009 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2009-03-17 04:07-0400\n"
+"PO-Revision-Date: 2009-03-17 04:07-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: en <LL(a)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.4\n"
+
+msgid "Get Data"
+msgstr ""
+
+msgid "Get ENCODE Data"
+msgstr ""
+
+msgid "ENCODE Tools"
+msgstr ""
+
+msgid "Lift-Over"
+msgstr ""
+
+msgid "Text Manipulation"
+msgstr ""
+
+msgid "Filter and Sort"
+msgstr ""
+
+msgid "Join, Subtract and Group"
+msgstr ""
+
+msgid "Convert Formats"
+msgstr ""
+
+msgid "Extract Features"
+msgstr ""
+
+msgid "Fetch Sequences"
+msgstr ""
+
+msgid "Fetch Alignments"
+msgstr ""
+
+msgid "Get Genomic Scores"
+msgstr ""
+
+msgid "Operate on Genomic Intervals"
+msgstr ""
+
+msgid "Statistics"
+msgstr ""
+
+msgid "Graph/Display Data"
+msgstr ""
+
+msgid "Regional Variation"
+msgstr ""
+
+msgid "Evolution: HyPhy"
+msgstr ""
+
+msgid "Taxonomy manipulation"
+msgstr ""
+
+msgid "Solexa tools"
+msgstr ""
+
+msgid "FASTA manipulation"
+msgstr ""
+
+msgid "Short Read QC and Manipulation"
+msgstr ""
+
+msgid "Short Read Mapping"
+msgstr ""
+
diff -r ab1b5bd846bc -r dc62ee52012e locale/ginga.pot
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locale/ginga.pot Tue Mar 17 22:46:47 2009 -0400
@@ -0,0 +1,296 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-21 18:33+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: templates/history/options.mako:17
+msgid " a new empty history"
+msgstr ""
+
+#: templates/history/options.mako:22 templates/history/options.mako:24
+msgid " current history"
+msgstr ""
+
+#: templates/history/options.mako:14
+#, python-format
+msgid " current history (stored as \"%s\")"
+msgstr ""
+
+#: templates/history/options.mako:20
+msgid " from the current history"
+msgstr ""
+
+#: templates/history/options.mako:15
+msgid " previously stored histories"
+msgstr ""
+
+#: templates/history/options.mako:8
+msgid " to store or switch histories."
+msgstr ""
+
+#: templates/user/index.mako:9 templates/user/index.mako:11
+msgid "Account settings"
+msgstr ""
+
+#: templates/root/masthead.mako:39
+msgid "Account: "
+msgstr ""
+
+#: templates/admin_main.mako:16
+msgid "Admin password: "
+msgstr ""
+
+#: templates/root/history_common.mako:41
+msgid "An error occurred running this job: "
+msgstr ""
+
+#: templates/history/options.mako:24
+msgid "Are you sure you want to delete the current history?"
+msgstr ""
+
+#: templates/user/index.mako:16
+msgid "Change your password"
+msgstr ""
+
+#: templates/history/options.mako:20
+msgid "Construct workflow"
+msgstr ""
+
+#: templates/history/options.mako:17
+msgid "Create"
+msgstr ""
+
+#: templates/user/index.mako:24
+msgid "Create new account"
+msgstr ""
+
+#: templates/history/rename.mako:9
+msgid "Current Name"
+msgstr ""
+
+#: templates/history/options.mako:24
+msgid "Delete"
+msgstr ""
+
+#: templates/history/share.mako:23
+msgid "Email of User to share with:"
+msgstr ""
+
+#: templates/root/history_common.mako:76
+#, python-format
+msgid "Error: unknown dataset state \"%s\"."
+msgstr ""
+
+#: templates/admin_main.mako:2 templates/admin_main.mako:7
+msgid "Galaxy Administration"
+msgstr ""
+
+#: templates/root/history.mako:12
+msgid "Galaxy History"
+msgstr ""
+
+#: templates/root/tool_menu.mako:11
+msgid "Galaxy Tools"
+msgstr ""
+
+#: templates/root/index.mako:34
+msgid "History"
+msgstr ""
+
+#: templates/history/share.mako:8
+msgid "History Name:"
+msgstr ""
+
+#: templates/history/options.mako:4
+msgid "History Options"
+msgstr ""
+
+#: templates/root/history_common.mako:57 templates/root/masthead.mako:25
+msgid "Info: "
+msgstr ""
+
+#: templates/root/history_common.mako:38
+msgid "Job is currently running"
+msgstr ""
+
+#: templates/root/history_common.mako:36
+msgid "Job is waiting to run"
+msgstr ""
+
+#: templates/history/options.mako:15
+msgid "List"
+msgstr ""
+
+#: templates/root/masthead.mako:36
+#, python-format
+msgid "Logged in as %s: "
+msgstr ""
+
+#: templates/user/index.mako:23
+msgid "Login"
+msgstr ""
+
+#: templates/user/index.mako:18
+msgid "Logout"
+msgstr ""
+
+#: templates/root/tool_menu.mako:100
+msgid "Manage"
+msgstr ""
+
+#: templates/history/rename.mako:9
+msgid "New Name"
+msgstr ""
+
+#: templates/root/history_common.mako:45
+msgid "No data: "
+msgstr ""
+
+#: templates/history/share.mako:8
+msgid "Number of Datasets:"
+msgstr ""
+
+#: templates/root/index.mako:32
+msgid "Options"
+msgstr ""
+
+#: templates/admin_main.mako:27
+msgid "Reload"
+msgstr ""
+
+#: templates/admin_main.mako:18
+msgid "Reload tool: "
+msgstr ""
+
+#: templates/history/options.mako:14
+msgid "Rename"
+msgstr ""
+
+#: templates/history/rename.mako:2 templates/history/rename.mako:5
+msgid "Rename History"
+msgstr ""
+
+#: templates/history/options.mako:22
+msgid "Share"
+msgstr ""
+
+#: templates/history/share.mako:5
+msgid "Share Histories"
+msgstr ""
+
+#: templates/history/share.mako:8
+msgid "Share Link"
+msgstr ""
+
+#: templates/history/share.mako:2
+msgid "Share histories"
+msgstr ""
+
+#: templates/history/share.mako:14
+msgid "This history contains no data."
+msgstr ""
+
+#: templates/root/index.mako:5
+msgid "Tools"
+msgstr ""
+
+#: templates/user/index.mako:17
+msgid "Update your email address"
+msgstr ""
+
+#: templates/root/tool_menu.mako:95
+msgid "Workflow"
+msgstr ""
+
+#: templates/user/index.mako:14
+#, python-format
+msgid "You are currently logged in as %s."
+msgstr ""
+
+#: templates/user/index.mako:21
+msgid "You are currently not logged in."
+msgstr ""
+
+#: templates/root/history.mako:223
+msgid "You are currently viewing a deleted history!"
+msgstr ""
+
+#: templates/history/options.mako:8
+msgid "You must be "
+msgstr ""
+
+#: templates/root/history.mako:252
+msgid "Your history is empty. Click 'Get Data' on the left pane to start"
+msgstr ""
+
+#: templates/root/masthead.mako:28
+msgid "blog"
+msgstr ""
+
+#: templates/history/share.mako:20
+msgid "copy link to share"
+msgstr ""
+
+#: templates/root/masthead.mako:39
+msgid "create"
+msgstr ""
+
+#: templates/root/history_common.mako:50
+msgid "database: "
+msgstr ""
+
+#: templates/root/history_common.mako:49
+msgid "format: "
+msgstr ""
+
+#: templates/history/options.mako:8
+msgid "logged in"
+msgstr ""
+
+#: templates/root/masthead.mako:40
+msgid "login"
+msgstr ""
+
+#: templates/root/masthead.mako:37
+msgid "logout"
+msgstr ""
+
+#: templates/root/masthead.mako:36
+msgid "manage"
+msgstr ""
+
+#: templates/root/history.mako:218
+msgid "refresh"
+msgstr ""
+
+#: templates/root/masthead.mako:25
+msgid "report bugs"
+msgstr ""
+
+#: templates/root/history_common.mako:42
+msgid "report this error"
+msgstr ""
+
+#: templates/root/masthead.mako:27
+msgid "screencasts"
+msgstr ""
+
+#: templates/root/masthead.mako:26
+msgid "wiki"
+msgstr ""
+
+#: templates/root/tool_menu.mako:100
+msgid "workflows"
+msgstr ""
diff -r ab1b5bd846bc -r dc62ee52012e locale/ja/LC_MESSAGES/ginga.mo
Binary file locale/ja/LC_MESSAGES/ginga.mo has changed
diff -r ab1b5bd846bc -r dc62ee52012e locale/ja/LC_MESSAGES/ginga.po
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locale/ja/LC_MESSAGES/ginga.po Tue Mar 17 22:46:47 2009 -0400
@@ -0,0 +1,518 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ginga 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-15 13:58+0900\n"
+"PO-Revision-Date: 2008-09-21 19:13+0900\n"
+"Last-Translator: Mitsuteru Nakao <mn(a)kazusa.or.jp>\n"
+"Language-Team: Japanese\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#:
+msgid "iso-8859-1"
+msgstr "utf-8"
+
+#:
+msgid "lang=\"en\""
+msgstr "lang=\"ja\""
+
+
+#: templates/base_panels.mako:5
+msgid "Galaxy"
+msgstr "Galaxy"
+
+#: templates/history/options.mako:24
+msgid "Are you sure you want to delete the current history?"
+msgstr "現在のヒストリーを消すことに同意しますか?"
+
+#: templates/root/history.mako:38
+msgid "collapse all"
+msgstr "すべてをおりたたむ"
+
+#: templates/root/index.mako:5
+msgid "Tools"
+msgstr "ツール"
+
+
+
+#: tools/**.xml
+msgid "Get Data"
+msgstr "データ取得"
+
+msgid "Get ENCODE Data"
+msgstr "ENCODEデータ取得"
+
+msgid "ENCODE Tools"
+msgstr "ENCODEツール"
+
+msgid "Lift-Over"
+msgstr ""
+
+msgid "Text Manipulation"
+msgstr "テキスト操作"
+
+msgid "Filter and Sort"
+msgstr "フィルターとソート"
+
+msgid "Join, Subtract and Group"
+msgstr "結合、差分、集合演算"
+
+msgid "Convert Formats"
+msgstr "フォーマット変換"
+
+msgid "Extract Features"
+msgstr "Features抽出"
+
+msgid "Fetch Sequences"
+msgstr "配列の取得"
+
+msgid "Fetch Alignments"
+msgstr "アラインメントの取得"
+
+msgid "Get Genomic Scores"
+msgstr "ゲノムスコア取得"
+
+msgid "Operate on Genomic Intervals"
+msgstr "ゲノム間隔での操作"
+
+msgid "Statistics"
+msgstr "統計量"
+
+msgid "Graph/Display Data"
+msgstr "グラフ/データ表示"
+
+msgid "Regional Variation"
+msgstr "領域的多型"
+
+msgid "Evolution: HyPhy"
+msgstr "進化: HyPhy"
+
+msgid "Taxonomy manipulation"
+msgstr "系統学的操作"
+
+msgid "Solexa tools"
+msgstr "Solexaツールス"
+
+msgid "FASTA manipulation"
+msgstr "FASTA操作"
+
+msgid "Short Read QC and Manipulation"
+msgstr "Short Read QCと操作"
+
+msgid "Short Read Mapping"
+msgstr "Short Readマッピング"
+
+
+
+
+
+#: templates/admin_main.mako:3 templates/admin_main.mako:8
+msgid "Galaxy Administration"
+msgstr "Galaxy 管理"
+
+#: templates/admin_main.mako:17
+msgid "Admin password: "
+msgstr "管理者パスワード: "
+
+#: templates/admin_main.mako:19
+msgid "Reload tool: "
+msgstr ""
+
+#: templates/admin_main.mako:35
+msgid "Reload"
+msgstr "再読込する"
+
+#: templates/dataset/edit_attributes.mako:2
+msgid "History Item Attributes"
+msgstr "ヒストリーアイテム変数"
+
+#: templates/dataset/edit_attributes.mako:19
+msgid "Edit Attributes"
+msgstr "変数を編集する"
+
+#: templates/dataset/edit_attributes.mako:64
+msgid ""
+"This will inspect the dataset and attempt to correct the above column values "
+"if they are not accurate."
+msgstr "これはデータセットを調査して上記のカラムの値を修正することを試みます。"
+
+#: templates/dataset/edit_attributes.mako:68
+msgid ""
+"Required metadata values are missing. Some of these values may not be "
+"editable by the user. Selecting \"Auto-detect\" will attempt to fix these "
+"values."
+msgstr "必要なメタデータの値が不明です。それらのいくつかの値はユーザによって編集可能にはなっていません。「自動判定」を選択するとそれらの値をただしくできるかもしれません。"
+
+#: templates/dataset/edit_attributes.mako:78
+msgid "Convert to new format"
+msgstr "新しいフォーマットに変換する"
+
+#: templates/dataset/edit_attributes.mako:84
+msgid "Convert to"
+msgstr "変換する"
+
+#: templates/dataset/edit_attributes.mako:95
+msgid ""
+"This will create a new dataset with the contents of this dataset converted "
+"to a new format."
+msgstr "新しいフォーマットに変換したデータセットを新規作成します。"
+
+#: templates/dataset/edit_attributes.mako:111
+msgid "Change data type"
+msgstr "データタイプを変更する"
+
+#: templates/dataset/edit_attributes.mako:117
+msgid "New Type"
+msgstr "新しいタイプ"
+
+#: templates/dataset/edit_attributes.mako:124
+msgid ""
+"This will change the datatype of the existing dataset but <i>not</i> modify "
+"its contents. Use this if Galaxy has incorrectly guessed the type of your "
+"dataset."
+msgstr "これは既存のデータセットのデータタイプを変更します。しかしデータセットの中身は変更しません。データセットのタイプの誤判定があったときに使用します。"
+
+#: templates/dataset/edit_attributes.mako:137
+msgid "Copy History Item"
+msgstr "ヒストリーアイテムをコピーする"
+
+#: templates/history/list.mako:3
+msgid "Your saved histories"
+msgstr "保存したヒストリー"
+
+#: templates/history/list.mako:19
+msgid "Stored Histories"
+msgstr "格納してあるヒストリー"
+
+#: templates/history/list.mako:21 templates/root/history.mako:239
+msgid "hide deleted"
+msgstr "削除したヒストリーを隠す"
+
+#: templates/history/list.mako:23
+msgid "show deleted"
+msgstr "削除したヒストリーを表示する"
+
+#: templates/history/list.mako:27
+msgid "Name"
+msgstr "名前"
+
+#: templates/history/list.mako:27
+msgid "Size"
+msgstr "サイズ"
+
+#: templates/history/list.mako:27
+msgid "Last modified"
+msgstr "最終更新日"
+
+#: templates/history/list.mako:27
+msgid "Actions"
+msgstr "操作"
+
+#: templates/history/list.mako:45
+msgid "rename"
+msgstr "名称変更する"
+
+#: templates/history/list.mako:46
+msgid "switch to"
+msgstr "変更する"
+
+#: templates/history/list.mako:47
+msgid "delete"
+msgstr "削除する"
+
+#: templates/history/list.mako:49
+msgid "undelete"
+msgstr "削除から戻す"
+
+#: templates/history/list.mako:55
+msgid "Action"
+msgstr "操作"
+
+#: templates/history/list.mako:56 templates/history/options.mako:21
+msgid "Share"
+msgstr "共有"
+
+#: templates/history/list.mako:56 templates/history/options.mako:15
+msgid "Rename"
+msgstr "名称変更する"
+
+#: templates/history/list.mako:56 templates/history/options.mako:24
+msgid "Delete"
+msgstr "削除する"
+
+#: templates/history/list.mako:58
+msgid "Undelete"
+msgstr "削除から戻す"
+
+#: templates/history/list.mako:65
+msgid "You have no stored histories"
+msgstr "保管してあるヒストリーはありません"
+
+#: templates/history/options.mako:5
+msgid "History Options"
+msgstr "ヒストリーオプション"
+
+#: templates/history/options.mako:9
+msgid "You must be "
+msgstr "あなたは"
+
+#: templates/history/options.mako:9
+msgid "logged in"
+msgstr "ログイン"
+
+#: templates/history/options.mako:9
+msgid " to store or switch histories."
+msgstr "しないとヒストリーの保管や変更ができません。"
+
+#: templates/history/options.mako:15
+#, python-format
+msgid " current history (stored as \"%s\")"
+msgstr " 現在のヒストリー(\"%s\" として保管されています)"
+
+#: templates/history/options.mako:16
+msgid "List"
+msgstr "リストする"
+
+#: templates/history/options.mako:16
+msgid " previously stored histories"
+msgstr " 以前に保管したヒストリー"
+
+#: templates/history/options.mako:18
+msgid "Create"
+msgstr "作成する"
+
+#: templates/history/options.mako:18
+msgid " a new empty history"
+msgstr " 新規ヒストリー"
+
+#: templates/history/options.mako:20
+msgid "Construct workflow"
+msgstr "ワークフローを構築する"
+
+#: templates/history/options.mako:20
+msgid " from the current history"
+msgstr " 現在のヒストリーから"
+
+#: templates/history/options.mako:21 templates/history/options.mako:24
+msgid " current history"
+msgstr " 現在のヒストリー"
+
+#: templates/history/options.mako:23
+msgid "Show deleted"
+msgstr "削除したヒストリーを表示する"
+
+#: templates/history/options.mako:23
+msgid " datasets in history"
+msgstr " ヒストリーのデータセット"
+
+#: templates/history/rename.mako:3 templates/history/rename.mako:6
+msgid "Rename History"
+msgstr "ヒストリーの名称変更をする"
+
+
+msgid "Rename Histories"
+msgstr "名称変更する"
+
+msgid "Perform Action"
+msgstr "操作を実行する"
+
+msgid "Submit"
+msgstr "登録する"
+
+
+
+#: templates/history/rename.mako:10
+msgid "Current Name"
+msgstr "現在の名称"
+
+#: templates/history/rename.mako:10
+msgid "New Name"
+msgstr "新しい名称"
+
+#: templates/history/share.mako:3
+msgid "Share histories"
+msgstr "ヒストリーを共有する"
+
+#: templates/history/share.mako:6
+msgid "Share Histories"
+msgstr "ヒストリーを共有する"
+
+#: templates/history/share.mako:9
+msgid "History Name:"
+msgstr "ヒストリー名"
+
+#: templates/history/share.mako:9
+msgid "Number of Datasets:"
+msgstr "データセット数"
+
+#: templates/history/share.mako:9
+msgid "Share Link"
+msgstr "共有リンク"
+
+#: templates/history/share.mako:15
+msgid "This history contains no data."
+msgstr "このヒストリーにはデータがありません。"
+
+#: templates/history/share.mako:21
+msgid "copy link to share"
+msgstr "共有リンクをコピーする"
+
+#: templates/history/share.mako:24
+msgid "Email of User to share with:"
+msgstr "共有したいユーザのEメール:"
+#msgstr "つぎのヒストリーを共有するユーザのEメールアドレス:"
+
+#: templates/root/history.mako:7
+msgid "Galaxy History"
+msgstr "Galaxy ヒストリー"
+
+#: templates/root/history.mako:237
+msgid "refresh"
+msgstr "リフレッシュ"
+
+#: templates/root/history.mako:245
+msgid "You are currently viewing a deleted history!"
+msgstr "消去したヒストリーをみています。"
+
+#: templates/root/history.mako:289
+msgid "Your history is empty. Click 'Get Data' on the left pane to start"
+msgstr "ヒストリーは空です。解析をはじめるには、左パネルの 'データ取得' をクリック"
+
+#: templates/root/history_common.mako:41
+msgid "Job is waiting to run"
+msgstr "ジョブは実行待ちです"
+
+#: templates/root/history_common.mako:43
+msgid "Job is currently running"
+msgstr "ジョブは実行中です"
+
+#: templates/root/history_common.mako:46
+msgid "An error occurred running this job: "
+msgstr "このジョブの実行中に発生したエラー: "
+
+#: templates/root/history_common.mako:47
+msgid "report this error"
+msgstr "このエラーを報告する"
+
+#: templates/root/history_common.mako:54
+msgid "No data: "
+msgstr "データ無し: "
+
+#: templates/root/history_common.mako:58
+msgid "format: "
+msgstr "フォーマット: "
+
+#: templates/root/history_common.mako:59
+msgid "database: "
+msgstr "データベース: "
+
+#: templates/root/history_common.mako:66 templates/root/masthead.mako:20
+msgid "Info: "
+msgstr "情報: "
+
+#: templates/root/history_common.mako:85
+#, python-format
+msgid "Error: unknown dataset state \"%s\"."
+msgstr "エラー: 不明なデータ状態 \"%s\"。"
+
+#: templates/root/index.mako:32
+msgid "Options"
+msgstr "オプション"
+
+#: templates/root/index.mako:34
+msgid "History"
+msgstr "ヒストリー"
+
+#: templates/root/masthead.mako:20
+msgid "report bugs"
+msgstr "バグを報告する"
+
+#: templates/root/masthead.mako:21
+msgid "wiki"
+msgstr "wiki"
+
+#: templates/root/masthead.mako:22
+msgid "screencasts"
+msgstr "スクリーンキャスト"
+
+#: templates/root/masthead.mako:23
+msgid "blog"
+msgstr "ブログ"
+
+#: templates/root/masthead.mako:31
+#, python-format
+msgid "Logged in as %s: "
+msgstr "%s としてログイン中: "
+
+#: templates/root/masthead.mako:31
+msgid "manage"
+msgstr "管理"
+
+#: templates/root/masthead.mako:32
+msgid "logout"
+msgstr "ログアウト"
+
+#: templates/root/masthead.mako:34
+msgid "Account: "
+msgstr "アカウント: "
+
+#: templates/root/masthead.mako:34
+msgid "create"
+msgstr "作成"
+
+#: templates/root/masthead.mako:35
+msgid "login"
+msgstr "ログイン"
+
+#: templates/root/tool_menu.mako:52
+msgid "Galaxy Tools"
+msgstr "Galaxy ツール群"
+
+#: templates/root/tool_menu.mako:129
+msgid "Workflow"
+msgstr "ワークフロー"
+
+#: templates/root/tool_menu.mako:134
+msgid "Manage"
+msgstr "管理"
+
+#: templates/root/tool_menu.mako:134
+msgid "workflows"
+msgstr "ワークフロー"
+
+#: templates/user/index.mako:2 templates/user/index.mako:4
+msgid "Account settings"
+msgstr "アカウント設定"
+
+#: templates/user/index.mako:7
+#, python-format
+msgid "You are currently logged in as %s."
+msgstr "%s としてログイン中。"
+
+#: templates/user/index.mako:9
+msgid "Change your password"
+msgstr "パスワード変更"
+
+#: templates/user/index.mako:10
+msgid "Update your email address"
+msgstr "メールアドレス変更"
+
+#: templates/user/index.mako:11
+msgid "Logout"
+msgstr "ログアウト"
+
+#: templates/user/index.mako:16
+msgid "Login"
+msgstr "ログイン"
+
+#: templates/user/index.mako:17
+msgid "Create new account"
+msgstr "新規アカウントを作成する"
diff -r ab1b5bd846bc -r dc62ee52012e locale/ja/LC_MESSAGES/tools.mo
Binary file locale/ja/LC_MESSAGES/tools.mo has changed
diff -r ab1b5bd846bc -r dc62ee52012e locale/ja/LC_MESSAGES/tools.po
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locale/ja/LC_MESSAGES/tools.po Tue Mar 17 22:46:47 2009 -0400
@@ -0,0 +1,85 @@
+# Japanese translations for PROJECT.
+# Copyright (C) 2009 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2009-03-17 04:06-0400\n"
+"PO-Revision-Date: 2009-03-17 04:06-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: ja <LL(a)li.org>\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.4\n"
+
+msgid "Get Data"
+msgstr ""
+
+msgid "Get ENCODE Data"
+msgstr ""
+
+msgid "ENCODE Tools"
+msgstr ""
+
+msgid "Lift-Over"
+msgstr ""
+
+msgid "Text Manipulation"
+msgstr ""
+
+msgid "Filter and Sort"
+msgstr ""
+
+msgid "Join, Subtract and Group"
+msgstr ""
+
+msgid "Convert Formats"
+msgstr ""
+
+msgid "Extract Features"
+msgstr ""
+
+msgid "Fetch Sequences"
+msgstr ""
+
+msgid "Fetch Alignments"
+msgstr ""
+
+msgid "Get Genomic Scores"
+msgstr ""
+
+msgid "Operate on Genomic Intervals"
+msgstr ""
+
+msgid "Statistics"
+msgstr ""
+
+msgid "Graph/Display Data"
+msgstr ""
+
+msgid "Regional Variation"
+msgstr ""
+
+msgid "Evolution: HyPhy"
+msgstr ""
+
+msgid "Taxonomy manipulation"
+msgstr ""
+
+msgid "Solexa tools"
+msgstr ""
+
+msgid "FASTA manipulation"
+msgstr ""
+
+msgid "Short Read QC and Manipulation"
+msgstr ""
+
+msgid "Short Read Mapping"
+msgstr ""
+
diff -r ab1b5bd846bc -r dc62ee52012e locale/tools.pot
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locale/tools.pot Tue Mar 17 22:46:47 2009 -0400
@@ -0,0 +1,66 @@
+#: tools/**.xml
+msgid "Get Data"
+msgstr ""
+
+msgid "Get ENCODE Data"
+msgstr ""
+
+msgid "ENCODE Tools"
+msgstr ""
+
+msgid "Lift-Over"
+msgstr ""
+
+msgid "Text Manipulation"
+msgstr ""
+
+msgid "Filter and Sort"
+msgstr ""
+
+msgid "Join, Subtract and Group"
+msgstr ""
+
+msgid "Convert Formats"
+msgstr ""
+
+msgid "Extract Features"
+msgstr ""
+
+msgid "Fetch Sequences"
+msgstr ""
+
+msgid "Fetch Alignments"
+msgstr ""
+
+msgid "Get Genomic Scores"
+msgstr ""
+
+msgid "Operate on Genomic Intervals"
+msgstr ""
+
+msgid "Statistics"
+msgstr ""
+
+msgid "Graph/Display Data"
+msgstr ""
+
+msgid "Regional Variation"
+msgstr ""
+
+msgid "Evolution: HyPhy"
+msgstr ""
+
+msgid "Taxonomy manipulation"
+msgstr ""
+
+msgid "Solexa tools"
+msgstr ""
+
+msgid "FASTA manipulation"
+msgstr ""
+
+msgid "Short Read QC and Manipulation"
+msgstr ""
+
+msgid "Short Read Mapping"
+msgstr ""
diff -r ab1b5bd846bc -r dc62ee52012e scripts/paster.py
--- a/scripts/paster.py Sun Mar 08 14:25:19 2009 -0400
+++ b/scripts/paster.py Tue Mar 17 22:46:47 2009 -0400
@@ -7,6 +7,7 @@
import os, sys
+sys.setdefaultencoding( 'utf_8' )
assert sys.version_info[:2] >= ( 2, 4 )
new_path = [ os.path.join( os.getcwd(), "lib" ) ]
diff -r ab1b5bd846bc -r dc62ee52012e templates/admin_main.mako
--- a/templates/admin_main.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/admin_main.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,37 +1,38 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
-<%def name="title()">Galaxy Administration</%def>
+<%def name="title()">${_('Galaxy Administration')}</%def>
<table align="center" width="70%" class="border" cellpadding="5" cellspacing="5">
<tr>
<td>
- <h3 align="center">Galaxy Administration</h3>
+ <h3 align="center">${_('Galaxy Administration')}</h3>
%if msg:
- <p class="ok_bgr">${msg}</p>
+ <p class="ok_bgr">${_(msg)}</p>
%endif
</td>
</tr>
<tr>
<td>
<form method="post" action="admin">
- <p>Admin password: <input type="password" name="passwd" size="8"></p>
+ <p>${_('Admin password: ')}<input type="password" name="passwd" size="8"></p>
<p>
- Reload tool:
+ ${_('Reload tool: ')}
<select name="tool_id">
%for key, val in toolbox.tool_panel.items():
%if key.startswith( 'tool' ):
- <option value="${val.id}">${val.name}</option>
+ <option value="${val.id}">${_(val.name)}</option>
%elif key.startswith( 'section' ):
<optgroup label="${val.name}">
<% section = val %>
%for section_key, section_val in section.elems.items():
%if section_key.startswith( 'tool' ):
- <option value="${section_val.id}">${section_val.name}</option>
+ <option value="${section_val.id}">${_(section_val.name)}</option>
%endif
%endfor
%endif
%endfor
</select>
- <button name="action" value="tool_reload">Reload</button>
+ <button name="action" value="tool_reload">${_('Reload')}</button>
</p>
</form>
</td>
diff -r ab1b5bd846bc -r dc62ee52012e templates/base.mako
--- a/templates/base.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/base.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,9 +1,10 @@
+<% _=n_ %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
-<title>${self.title()}</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<title>a ${self.title()}</title>
+<meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
${self.stylesheets()}
${self.javascripts()}
</head>
@@ -28,4 +29,4 @@
## <![endif]-->
<script type="text/javascript" src="${h.url_for('/static/scripts/jquery.js')}"></script>
<script type="text/javascript" src="${h.url_for('/static/scripts/galaxy.base.js')}"></script>
-</%def>
\ No newline at end of file
+</%def>
diff -r ab1b5bd846bc -r dc62ee52012e templates/base_panels.mako
--- a/templates/base_panels.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/base_panels.mako Tue Mar 17 22:46:47 2009 -0400
@@ -39,33 +39,34 @@
</%def>
## Document
-<html lang="en">
+<html>
<head>
- <title>${self.title()}</title>
- ${self.javascripts()}
- ${self.stylesheets()}
+ <title>${self.title()}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
+ ${self.javascripts()}
+ ${self.stylesheets()}
</head>
<body scroll="no">
- ## Background displays first
- <div id="background"></div>
- ## Layer iframes over backgrounds
- <div id="masthead">
- ${self.masthead()}
- </div>
- <div id="left">
- ${self.left_panel()}
- </div>
- <div id="left-border"><div id="left-border-inner" style="display: none;"></div></div>
- <div id="center">
- ${self.center_panel()}
- </div>
- <div id="right-border"><div id="right-border-inner" style="display: none;"></div></div>
- <div id="right">
- ${self.right_panel()}
- </div>
+ ## Background displays first
+ <div id="background"></div>
+ ## Layer iframes over backgrounds
+ <div id="masthead">
+ ${self.masthead()}
+ </div>
+ <div id="left">
+ ${self.left_panel()}
+ </div>
+ <div id="left-border"><div id="left-border-inner" style="display: none;"></div></div>
+ <div id="center">
+ ${self.center_panel()}
+ </div>
+ <div id="right-border"><div id="right-border-inner" style="display: none;"></div></div>
+ <div id="right">
+ ${self.right_panel()}
+ </div>
## Allow other body level elements
- ${next.body()}
+ ${next.body()}
</body>
## Scripts can be loaded later since they progressively add features to
## the panels, but do not change layout
diff -r ab1b5bd846bc -r dc62ee52012e templates/dataset/edit_attributes.mako
--- a/templates/dataset/edit_attributes.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/dataset/edit_attributes.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,5 +1,5 @@
<%inherit file="/base.mako"/>
-<%def name="title()">History Item Attributes</%def>
+<%def name="title()">${_('History Item Attributes')}</%def>
<%def name="datatype( dataset, datatypes )">
@@ -7,16 +7,16 @@
## $datatypes.sort()
%for ext in datatypes:
%if dataset.ext == ext:
- <option value="${ext}" selected="yes">${ext}</option>
+ <option value="${ext}" selected="yes">${_(ext)}}</option>
%else:
- <option value="${ext}">${ext}</option>
+ <option value="${ext}">${_(ext)}</option>
%endif
%endfor
</select>
</%def>
<div class="toolForm">
- <div class="toolFormTitle">Edit Attributes</div>
+ <div class="toolFormTitle">${_('Edit Attributes')}</div>
<div class="toolFormBody">
<form name="edit_attributes" action="${h.url_for( action='edit' )}" method="post">
<input type="hidden" name="id" value="${data.id}">
@@ -52,21 +52,20 @@
%endif
%endfor
<div class="form-row">
- <input type="submit" name="save" value="Save">
+ <input type="submit" name="save" value="${_('Save')}">
</div>
</form>
<form name="auto_detect" action="${h.url_for( action='edit' )}" method="post">
<input type="hidden" name="id" value="${data.id}">
<div style="float: left; width: 250px; margin-right: 10px;">
- <input type="submit" name="detect" value="Auto-detect">
+ <input type="submit" name="detect" value="${_('Auto-detect')}">
</div>
<div class="toolParamHelp" style="clear: both;">
- This will inspect the dataset and attempt to correct the above column values
- if they are not accurate.
+ ${_('This will inspect the dataset and attempt to correct the above column values if they are not accurate.')}
</div>
</form>
%if data.missing_meta():
- <div class="errormessagesmall">Required metadata values are missing. Some of these values may not be editable by the user. Selecting "Auto-detect" will attempt to fix these values.</div>
+ <div class="errormessagesmall">${_('Required metadata values are missing. Some of these values may not be editable by the user. Selecting "Auto-detect" will attempt to fix these values.')}</div>
%endif
</div>
</div>
@@ -76,13 +75,13 @@
<% converters = data.get_converter_types() %>
%if len( converters ) > 0:
<div class="toolForm">
- <div class="toolFormTitle">Convert to new format</div>
+ <div class="toolFormTitle">${_('Convert to new format')}</div>
<div class="toolFormBody">
<form name="convert_data" action="${h.url_for( action='edit' )}" method="post">
<input type="hidden" name="id" value="${data.id}">
<div class="form-row">
<label>
- Convert to:
+ ${_('Convert to')}:
</label>
<div style="float: left; width: 250px; margin-right: 10px;">
<select name="target_type">
@@ -93,13 +92,12 @@
</div>
<div class="toolParamHelp" style="clear: both;">
- This will create a new dataset with the contents of this
- dataset converted to a new format.
+ ${_('This will create a new dataset with the contents of this dataset converted to a new format.')}
</div>
<div style="clear: both"></div>
</div>
<div class="form-row">
- <input type="submit" name="convert_data" value="Convert">
+ <input type="submit" name="convert_data" value="${_('Convert')}">
</div>
</form>
</div>
@@ -110,27 +108,25 @@
<div class="toolForm">
- <div class="toolFormTitle">Change data type</div>
+ <div class="toolFormTitle">${_('Change data type')}</div>
<div class="toolFormBody">
<form name="change_datatype" action="${h.url_for( action='edit' )}" method="post">
<input type="hidden" name="id" value="${data.id}">
<div class="form-row">
<label>
- New Type:
+ ${_('New Type')}:
</label>
<div style="float: left; width: 250px; margin-right: 10px;">
${datatype( data, datatypes )}
</div>
<div class="toolParamHelp" style="clear: both;">
- This will change the datatype of the existing dataset
- but <i>not</i> modify its contents. Use this if Galaxy
- has incorrectly guessed the type of your dataset.
+ ${_('This will change the datatype of the existing dataset but <i>not</i> modify its contents. Use this if Galaxy has incorrectly guessed the type of your dataset.')}
</div>
<div style="clear: both"></div>
</div>
<div class="form-row">
- <input type="submit" name="change" value="Save">
+ <input type="submit" name="change" value="${_('Save')}">
</div>
</form>
</div>
@@ -138,7 +134,7 @@
<p>
<div class="toolForm">
- <div class="toolFormTitle">Copy History Item</div>
+ <div class="toolFormTitle">${_('Copy History Item')}</div>
<div class="toolFormBody">
Click <a href="${h.url_for( controller='dataset', action='copy_datasets', source_dataset_ids=data.id, target_history_ids=data.history_id )}" target="galaxy_main">here</a> to make a copy of this history item.
</div>
diff -r ab1b5bd846bc -r dc62ee52012e templates/form.mako
--- a/templates/form.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/form.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,3 +1,4 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
<%def name="title()">${form.title}</%def>
@@ -22,7 +23,7 @@
%>
<div class="${cls}">
<label>
- ${input.label}:
+ ${_(input.label)}:
</label>
<div style="float: left; width: 250px; margin-right: 10px;">
<input type="${input.type}" name="${input.name}" value="${input.value}" size="40">
diff -r ab1b5bd846bc -r dc62ee52012e templates/history/list.mako
--- a/templates/history/list.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/history/list.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,5 +1,6 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
-<%def name="title()">Your saved histories</%def>
+<%def name="title()">${_('Your saved histories')}</%def>
%if error_msg:
<p>
@@ -15,15 +16,15 @@
%endif
%if user.histories:
- <h1 style="margin-bottom:0px;">Stored Histories</h1>
+ <h1 style="margin-bottom:0px;">${_('Stored Histories')}</h1>
%if show_deleted:
- <div><a href="${h.url_for( action='history_available', id=','.join( ids ), show_deleted=False )}">hide deleted</a></div>
+ <div><a href="${h.url_for( action='history_available', id=','.join( ids ), show_deleted=False )}">${_('hide deleted')}</a></div>
%else:
- <div><a href="${h.url_for( action='history_available', id=','.join( ids ), show_deleted=True )}">show deleted</a></div>
+ <div><a href="${h.url_for( action='history_available', id=','.join( ids ), show_deleted=True )}">${_('show deleted')}</a></div>
%endif
<form name="history_actions" action="${h.url_for( action='history_available')}" method="post" >
<table class="colored" border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr class="header" align="center"><td>Name</td><td>Size</td><td>Last modified</td><td>Actions</td></tr>
+ <tr class="header" align="center"><td>${_('Name')}</td><td>${_('Size')}</td><td>${_('Last modified')}</td><td>${_('Actions')}</td></tr>
%for history in user.histories:
%if ( show_deleted and not history.purged ) or not( history.deleted ):
<tr>
@@ -41,25 +42,25 @@
<td>${str(history.update_time)[:19]}</td>
<td>
%if not history.deleted:
- <a href="${h.url_for( action='history_rename', id=history.id )}">rename</a><br />
- <a href="${h.url_for( action='history_switch', id=history.id )}">switch to</a><br />
- <a href="${h.url_for( action='history_delete', id=history.id )}" confirm="Are you sure you want to delete this history?">delete</a><br />
+ <a href="${h.url_for( action='history_rename', id=history.id )}">${_('rename')}</a><br />
+ <a href="${h.url_for( action='history_switch', id=history.id )}">${_('switch to')}</a><br />
+ <a href="${h.url_for( action='history_delete', id=history.id )}" confirm="Are you sure you want to delete this history?">${_('delete')}</a><br />
%else:
- <a href="${h.url_for( action='history_undelete', id=history.id )}">undelete</a><br />
+ <a href="${h.url_for( action='history_undelete', id=history.id )}">${_('undelete')}</a><br />
%endif
</td>
</tr>
%endif
%endfor
- <tr><th colspan="100%">Action</th></tr>
- <tr><td colspan="100%" align="center"><input type="radio" name="do_operation" value="share" checked>Share <input type="radio" name="do_operation" value="rename">Rename <input type="radio" name="do_operation" value="delete">Delete
+ <tr><th colspan="100%">${_('Action')}</th></tr>
+ <tr><td colspan="100%" align="center"><input type="radio" name="do_operation" value="share" checked>${_('Share')} <input type="radio" name="do_operation" value="rename">${_('Rename')} <input type="radio" name="do_operation" value="delete">${_('Delete')}
%if show_deleted:
- <input type="radio" name="do_operation" value="undelete">Undelete
+ <input type="radio" name="do_operation" value="undelete">${_('Undelete')}
%endif
</td></tr>
- <tr><td colspan="100%" align="center"><input type="submit" name="submit" value="Perform Action"></td></tr>
+ <tr><td colspan="100%" align="center"><input type="submit" name="submit" value="${_('Perform Action')}"></td></tr>
</table>
</form>
%else:
- You have no stored histories
+ ${_('You have no stored histories')}
%endif
diff -r ab1b5bd846bc -r dc62ee52012e templates/history/options.mako
--- a/templates/history/options.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/history/options.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,25 +1,26 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
<%def name="title()">Your saved histories</%def>
-<h1>History Options</h1>
+<h1>${_('History Options')}</h1>
%if not user:
<div class="infomessage">
- <div>You must be <a target="galaxy_main" href="${h.url_for( controller='user', action='login' )}">logged in</a> to store or switch histories.</div>
+ <div>${_('You must be ')}<a target="galaxy_main" href="${h.url_for( controller='user', action='login' )}">${_('logged in')}</a>${_(' to store or switch histories.')}</div>
</div>
%endif
<ul>
%if user:
- <li><a href="${h.url_for( controller='root', action='history_rename', id=history.id )}" target="galaxy_main">Rename</a> current history (stored as "${history.name}")</li>
- <li><a href="${h.url_for( controller='root', action='history_available')}" target="galaxy_main">List</a> previously stored histories</li>
+ <li><a href="${h.url_for( controller='root', action='history_rename', id=history.id )}" target="galaxy_main">${_('Rename')}</a>${_(' current history (stored as "%s")') % history.name}</li>
+ <li><a href="${h.url_for( controller='root', action='history_available')}" target="galaxy_main">${_('List')}</a>${_(' previously stored histories')}</li>
%if len( history.active_datasets ) > 0:
- <li><a href="${h.url_for( controller='root', action='history_new' )}">Create</a> a new empty history</li>
+ <li><a href="${h.url_for( controller='root', action='history_new' )}">${_('Create')}</a>${_(' a new empty history')}</li>
%endif
- <li><a href="${h.url_for( controller='workflow', action='build_from_current_history' )}">Construct workflow</a> from the current history</li>
- <li><a href="${h.url_for( controller='root', action='history_share' )}" target="galaxy_main">Share</a> current history</div>
+ <li><a href="${h.url_for( controller='workflow', action='build_from_current_history' )}">${_('Construct workflow')}</a>${_(' from the current history')}</li>
+ <li><a href="${h.url_for( controller='root', action='history_share' )}" target="galaxy_main">${_('Share')}</a>${_(' current history')}</div>
%endif
- <li><a href="${h.url_for( controller='root', action='history', show_deleted=True)}" target="galaxy_history">Show deleted</a> datasets in history</li>
- <li><a href="${h.url_for( controller='root', action='history_delete', id=history.id )}" confirm="Are you sure you want to delete the current history?">Delete</a> current history</div>
+ <li><a href="${h.url_for( controller='root', action='history', show_deleted=True)}" target="galaxy_history">${_('Show deleted')}</a>${_(' datasets in history')}</li>
+ <li><a href="${h.url_for( controller='root', action='history_delete', id=history.id )}" confirm="${_('Are you sure you want to delete the current history?')}">${_('Delete')}</a>${_(' current history')}</div>
</ul>
diff -r ab1b5bd846bc -r dc62ee52012e templates/history/rename.mako
--- a/templates/history/rename.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/history/rename.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,16 +1,17 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
-<%def name="title()">Rename History</%def>
+<%def name="title()">${_('Rename History')}</%def>
<div class="toolForm">
- <div class="toolFormTitle">Rename History</div>
+ <div class="toolFormTitle">${_('Rename History')}</div>
<div class="toolFormBody">
<form action="${h.url_for( action='history_rename' )}" method="post" >
<table>
- <tr><th>Current Name</th><th>New Name</th></tr>
+ <tr><th>${_('Current Name')}</th><th>${_('New Name')}</th></tr>
%for history in histories:
<tr><td>${history.name}<input type="hidden" name="id" value="${history.id}"></td><td><input type="text" name="name" value="${history.name}" size="40"></td></tr>
%endfor
- <tr><td colspan="2"><input type="submit" name="history_rename_btn" value="Rename Histories"></td></tr>
+ <tr><td colspan="2"><input type="submit" name="history_rename_btn" value="${_('Rename Histories')}"></td></tr>
</table>
</form>
</div>
diff -r ab1b5bd846bc -r dc62ee52012e templates/history/share.mako
--- a/templates/history/share.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/history/share.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,26 +1,27 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
-<%def name="title()">Share histories</%def>
+<%def name="title()">${_('Share histories')}</%def>
<div class="toolForm">
-<div class="toolFormTitle">Share Histories</div>
+<div class="toolFormTitle">${_('Share Histories')}</div>
<table>
<form action="${h.url_for( action='history_share' )}" method="post" >
- <tr><th>History Name:</td><th>Number of Datasets:</th><th>Share Link</th></tr>
+ <tr><th>${_('History Name:')}</td><th>${_('Number of Datasets:')}</th><th>${_('Share Link')}</th></tr>
%for history in histories:
<tr><td align="center">${history.name}<input type="hidden" name="id" value="${history.id}"></td><td align="center">
%if len(history.datasets) < 1:
<div class="warningmark">
- This history contains no data.
+ ${_('This history contains no data.')}
</div>
%else:
${len(history.datasets)}
%endif
</td>
- <td align="center"><a href="${h.url_for( action='history_import', id=history.id )}">copy link to share</a></td>
+ <td align="center"><a href="${h.url_for( action='history_import', id=history.id )}">${_('copy link to share')}</a></td>
</tr>
%endfor
- <tr><td>Email of User to share with:</td><td><input type="text" name="email" value="${email}" size="40"></td></tr>
+ <tr><td>${_('Email of User to share with:')}</td><td><input type="text" name="email" value="${email}" size="40"></td></tr>
%if send_to_err:
<tr><td colspan="100%"><div class="errormessage">${send_to_err}</div></td></tr>
%endif
diff -r ab1b5bd846bc -r dc62ee52012e templates/message.mako
--- a/templates/message.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/message.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,3 +1,4 @@
+<% _=n_ %>
<%inherit file="/base.mako"/>
<%def name="javascripts()">
@@ -29,4 +30,4 @@
</script>
</%def>
-<div class="${message_type}message">${message}</div>
+<div class="${message_type}message">${_(message)}</div>
diff -r ab1b5bd846bc -r dc62ee52012e templates/root/history.mako
--- a/templates/root/history.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/root/history.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,16 +1,17 @@
+<% _=n_ %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
-<title>Galaxy History</title>
+<title>${_('Galaxy History')}</title>
## This is now only necessary for tests
%if bool( [ data for data in history.active_datasets if data.state in ['running', 'queued', '', None ] ] ):
<!-- running: do not change this comment, used by TwillTestCase.wait -->
%endif
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
<meta http-equiv="Pragma" content="no-cache">
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/history.css')}" rel="stylesheet" type="text/css" />
@@ -29,7 +30,7 @@
initShowHide();
setupHistoryItem( q("div.historyItemWrapper") );
// Collapse all
- q("#top-links").append( "| " ).append( q("<a href='#'>collapse all</a>").click( function() {
+ q("#top-links").append( "| " ).append( q("<a href='#'>${_('collapse all')}</a>").click( function() {
q( "div.historyItemBody:visible" ).each( function() {
if ( q.browser.mozilla )
{
@@ -39,16 +40,16 @@
})
var state = new CookieSet( "galaxy.history.expand_state" );
state.removeAll().save();
- return false;
+ return false;
}));
})
- // Functionized so AJAX'd datasets can call them
+ //' Functionized so AJAX'd datasets can call them
// Get shown/hidden state from cookie
function initShowHide() {
q( "div.historyItemBody" ).hide();
// Load saved state and show as neccesary
var state = new CookieSet( "galaxy.history.expand_state" );
- for ( id in state.store ) { q( "#" + id ).children( "div.historyItemBody" ).show(); }
+ for ( id in state.store ) { q( "#" + id ).children( "div.historyItemBody" ).show(); }
// If Mozilla, hide scrollbars in hidden items since they cause animation bugs
if ( q.browser.mozilla ) {
q( "div.historyItemBody" ).each( function() {
@@ -80,51 +81,51 @@
state.add( id ); state.save();
delete state;
}
- return false;
+ return false;
});
// Delete link
q(this).find( "a.historyItemDelete" ).each( function() {
- var data_id = this.id.split( "-" )[1];
- q(this).click( function() {
- q( '#progress-' + data_id ).show();
- q.ajax({
- url: "${h.url_for( action='delete_async', id='XXX' )}".replace( 'XXX', data_id ),
- error: function() { alert( "Delete failed" ) },
- success: function() {
- %if show_deleted:
- var to_update = {};
- to_update[data_id] = "none";
- updater( to_update );
- %else:
- q( "#historyItem-" + data_id ).fadeOut( "fast", function() {
- q( "div#historyItemContainer-" + data_id ).remove();
- if ( q( "div.historyItemContainer" ).length < 1 ) {
- q ( "div#emptyHistoryMessage" ).show();
- }
- });
- %endif
- }
- });
- return false;
- });
- });
+ var data_id = this.id.split( "-" )[1];
+ q(this).click( function() {
+ q( '#progress-' + data_id ).show();
+ q.ajax({
+ url: "${h.url_for( action='delete_async', id='XXX' )}".replace( 'XXX', data_id ),
+ error: function() { alert( "Delete failed" ) },
+ success: function() {
+ %if show_deleted:
+ var to_update = {};
+ to_update[data_id] = "none";
+ updater( to_update );
+ %else:
+ q( "#historyItem-" + data_id ).fadeOut( "fast", function() {
+ q( "div#historyItemContainer-" + data_id ).remove();
+ if ( q( "div.historyItemContainer" ).length < 1 ) {
+ q ( "div#emptyHistoryMessage" ).show();
+ }
+ });
+ %endif
+ }
+ });
+ return false;
+ });
+ });
// Undelete link
q(this).find( "a.historyItemUndelete" ).each( function() {
- var data_id = this.id.split( "-" )[1];
- q(this).click( function() {
- q( '#progress-' + data_id ).show();
- q.ajax({
- url: "${h.url_for( controller='dataset', action='undelete_async', id='XXX' )}".replace( 'XXX', data_id ),
- error: function() { alert( "Undelete failed" ) },
- success: function() {
- var to_update = {};
- to_update[data_id] = "none";
- updater( to_update );
- }
- });
- return false;
- });
- });
+ var data_id = this.id.split( "-" )[1];
+ q(this).click( function() {
+ q( '#progress-' + data_id ).show();
+ q.ajax({
+ url: "${h.url_for( controller='dataset', action='undelete_async', id='XXX' )}".replace( 'XXX', data_id ),
+ error: function() { alert( "Undelete failed" ) },
+ success: function() {
+ var to_update = {};
+ to_update[data_id] = "none";
+ updater( to_update );
+ }
+ });
+ return false;
+ });
+ });
});
};
// Looks for changes in dataset state using an async request. Keeps
@@ -233,15 +234,15 @@
<div id="top-links" class="historyLinks">
- <a href="${h.url_for('history', show_deleted=show_deleted)}">refresh</a>
+ <a href="${h.url_for('history', show_deleted=show_deleted)}">${_('refresh')}</a>
%if show_deleted:
- | <a href="${h.url_for('history', show_deleted=False)}">hide deleted</a>
+ | <a href="${h.url_for('history', show_deleted=False)}">${_('hide deleted')}</a>
%endif
</div>
%if history.deleted:
<div class="warningmessagesmall">
- You are currently viewing a deleted history!
+ ${_('You are currently viewing a deleted history!')}
</div>
<p></p>
%endif
@@ -285,7 +286,7 @@
</script>
<div class="infomessagesmall" id="emptyHistoryMessage" style="display:none;">
%endif
- Your history is empty. Click 'Get Data' on the left pane to start
+ ${_("Your history is empty. Click 'Get Data' on the left pane to start")}
</div>
</body>
diff -r ab1b5bd846bc -r dc62ee52012e templates/root/history_as_xml.mako
--- a/templates/root/history_as_xml.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/root/history_as_xml.mako Tue Mar 17 22:46:47 2009 -0400
@@ -2,7 +2,7 @@
<history>
%for data in history.active_datasets:
<data id="${data.id}" hid="${data.hid}" name="${data.name}" state="${data.state}" dbkey="${data.dbkey}">
- ${data.blurb}
+ ${_(data.blurb)}
</data>
%endfor
</history>
diff -r ab1b5bd846bc -r dc62ee52012e templates/root/history_common.mako
--- a/templates/root/history_common.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/root/history_common.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,10 +1,11 @@
+<% _=n_ %>
## Render the dataset `data` as history item, using `hid` as the displayed id
<%def name="render_dataset( data, hid, show_deleted_on_refresh = False )">
<%
- if data.state in ['no state','',None]:
- data_state = "queued"
- else:
- data_state = data.state
+ if data.state in ['no state','',None]:
+ data_state = "queued"
+ else:
+ data_state = data.state
%>
<div class="historyItemWrapper historyItem historyItem-${data_state}" id="historyItem-${data.id}">
@@ -14,55 +15,55 @@
</div>
%endif
## Header row for history items (name, state, action buttons)
- <div style="overflow: hidden;" class="historyItemTitleBar">
- <div style="float: left; padding-right: 3px;">
- <div style='display: none;' id="progress-${data.id}">
- <img src="${h.url_for('/static/style/data_running.gif')}" border="0" align="middle" >
- </div>
- %if data_state == 'running':
- <div><img src="${h.url_for('/static/style/data_running.gif')}" border="0" align="middle"></div>
- %elif data_state != 'ok':
- <div><img src="${h.url_for( "/static/style/data_%s.png" % data_state )}" border="0" align="middle"></div>
- %endif
- </div>
- <div style="float: right;">
- <a href="${h.url_for( controller='dataset', dataset_id=data.id, action='display', filename='index')}" target="galaxy_main"><img src="${h.url_for('/static/images/eye_icon.png')}" rollover="${h.url_for('/static/images/eye_icon_dark.png')}" width='16' height='16' alt='display data' title='display data' class='displayButton' border='0'></a>
- <a href="${h.url_for( action='edit', id=data.id )}" target="galaxy_main"><img src="${h.url_for('/static/images/pencil_icon.png')}" rollover="${h.url_for('/static/images/pencil_icon_dark.png')}" width='16' height='16' alt='edit attributes' title='edit attributes' class='editButton' border='0'></a>
- <a href="${h.url_for( action='delete', id=data.id, show_deleted_on_refresh=show_deleted_on_refresh )}" class="historyItemDelete" id="historyItemDeleter-${data.id}"><img src="${h.url_for('/static/images/delete_icon.png')}" rollover="${h.url_for('/static/images/delete_icon_dark.png')}" width='16' height='16' alt='delete' class='deleteButton' border='0'></a>
- </div>
- <span class="historyItemTitle"><b>${hid}: ${data.display_name()}</b></span>
- </div>
+ <div style="overflow: hidden;" class="historyItemTitleBar">
+ <div style="float: left; padding-right: 3px;">
+ <div style='display: none;' id="progress-${data.id}">
+ <img src="${h.url_for('/static/style/data_running.gif')}" border="0" align="middle" >
+ </div>
+ %if data_state == 'running':
+ <div><img src="${h.url_for('/static/style/data_running.gif')}" border="0" align="middle"></div>
+ %elif data_state != 'ok':
+ <div><img src="${h.url_for( "/static/style/data_%s.png" % data_state )}" border="0" align="middle"></div>
+ %endif
+ </div>
+ <div style="float: right;">
+ <a href="${h.url_for( controller='dataset', dataset_id=data.id, action='display', filename='index')}" target="galaxy_main"><img src="${h.url_for('/static/images/eye_icon.png')}" rollover="${h.url_for('/static/images/eye_icon_dark.png')}" width='16' height='16' alt='display data' title='display data' class='displayButton' border='0'></a>
+ <a href="${h.url_for( action='edit', id=data.id )}" target="galaxy_main"><img src="${h.url_for('/static/images/pencil_icon.png')}" rollover="${h.url_for('/static/images/pencil_icon_dark.png')}" width='16' height='16' alt='edit attributes' title='edit attributes' class='editButton' border='0'></a>
+ <a href="${h.url_for( action='delete', id=data.id, show_deleted_on_refresh=show_deleted_on_refresh )}" class="historyItemDelete" id="historyItemDeleter-${data.id}"><img src="${h.url_for('/static/images/delete_icon.png')}" rollover="${h.url_for('/static/images/delete_icon_dark.png')}" width='16' height='16' alt='delete' class='deleteButton' border='0'></a>
+ </div>
+ <span class="historyItemTitle"><b>${hid}: ${data.display_name()}</b></span>
+ </div>
## Body for history items, extra info and actions, data "peek"
<div id="info${data.id}" class="historyItemBody">
%if data_state == "queued":
- <div>Job is waiting to run</div>
+ <div>${_('Job is waiting to run')}</div>
%elif data_state == "running":
- <div>Job is currently running</div>
+ <div>${_('Job is currently running')}</div>
%elif data_state == "error":
<div>
- An error occurred running this job: <i>${data.display_info().strip()}</i>,
- <a href="${h.url_for( controller='dataset', action='errors', id=data.id )}" target="galaxy_main">report this error</a>
+ ${_('An error occurred running this job: ')}<i>${data.display_info().strip()}</i>,
+ <a href="${h.url_for( controller='dataset', action='errors', id=data.id )}" target="galaxy_main">${_('report this error')}</a>
</div>
%elif data_state == "discarded":
<div>
The job creating this dataset was cancelled before completion.
</div>
%elif data_state == "empty":
- <div>No data: <i>${data.display_info()}</i></div>
+ <div>${_('No data: ')}<i>${_(data.display_info())}</i></div>
%elif data_state == "ok":
<div>
${data.blurb},
- format: <span class="${data.ext}">${data.ext}</span>,
- database:
+ ${_('format: ')}<span class="${data.ext}">${_(data.ext)}</span>,
+ ${_('database: ')}
%if data.dbkey == '?':
- <a href="${h.url_for( action='edit', id=data.id )}" target="galaxy_main">${data.dbkey}</a>
+ <a href="${h.url_for( action='edit', id=data.id )}" target="galaxy_main">${_(data.dbkey)}</a>
%else:
- <span class="${data.dbkey}">${data.dbkey}</span>
+ <span class="${data.dbkey}">${_(data.dbkey)}</span>
%endif
</div>
- <div class="info">Info: ${data.display_info()} </div>
+ <div class="info">${_('Info: ')}${_(data.display_info())} </div>
<div>
%if data.has_data:
<a href="${h.url_for( action='display', id=data.id, tofile='yes', toext=data.ext )}" target="_blank">save</a>
@@ -70,30 +71,29 @@
<% display_links = data.datatype.get_display_links( data, display_app, app, request.base ) %>
%if len( display_links ) > 0:
| ${data.datatype.get_display_label(display_app)}
- %for display_name, display_link in display_links:
- <a target="_blank" href="${display_link}">${display_name}</a>
- %endfor
+ %for display_name, display_link in display_links:
+ <a target="_blank" href="${display_link}">${_(display_name)}</a>
+ %endfor
%endif
%endfor
%endif
</div>
%if data.peek != "no peek":
- <div><pre id="peek${data.id}" class="peek">${data.display_peek()}</pre></div>
+ <div><pre id="peek${data.id}" class="peek">${_(data.display_peek())}</pre></div>
%endif
- %else:
- <div>Error: unknown dataset state "${data_state}".</div>
+ %else:
+ <div>${_('Error: unknown dataset state "%s".') % data_state}</div>
%endif
- ## Recurse for child datasets
-
+ ## Recurse for child datasets
%if len( data.children ) > 0:
- ## FIXME: This should not be in the template, there should
- ## be a 'visible_children' method on dataset.
+ ## FIXME: This should not be in the template, there should
+ ## be a 'visible_children' method on dataset.
<%
- children = []
- for child in data.children:
- if child.visible:
- children.append( child )
+ children = []
+ for child in data.children:
+ if child.visible:
+ children.append( child )
%>
%if len( children ) > 0:
<div>
@@ -104,8 +104,6 @@
</div>
%endif
%endif
-
</div>
</div>
-
</%def>
diff -r ab1b5bd846bc -r dc62ee52012e templates/root/index.mako
--- a/templates/root/index.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/root/index.mako Tue Mar 17 22:46:47 2009 -0400
@@ -2,7 +2,7 @@
<%def name="left_panel()">
<div class="unified-panel-header" unselectable="on">
- <div class='unified-panel-header-inner'>Tools</div>
+ <div class='unified-panel-header-inner'>${n_('Tools')}</div>
</div>
<div class="unified-panel-body" style="overflow: hidden;">
<iframe name="galaxy_tools" src="${h.url_for( 'tool_menu' )}" frameborder="0" style="position: absolute; margin: 0; border: 0 none; height: 100%; width: 100%;"> </iframe>
@@ -29,9 +29,9 @@
<div class="unified-panel-header" unselectable="on">
<div class="unified-panel-header-inner">
<div style="float: right">
- <a class='panel-header-button' href="${h.url_for( action='history_options' )}" target="galaxy_main"><span>Options</span></a>
+ <a class='panel-header-button' href="${h.url_for( action='history_options' )}" target="galaxy_main"><span>${_('Options')}</span></a>
</div>
- <div class="panel-header-text">History</div>
+ <div class="panel-header-text">${_('History')}</div>
</div>
</div>
<div class="unified-panel-body" style="overflow: hidden;">
diff -r ab1b5bd846bc -r dc62ee52012e templates/root/masthead.mako
--- a/templates/root/masthead.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/root/masthead.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,10 +1,11 @@
+<% _=n_ %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Galaxy</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/masthead.css')}" rel="stylesheet" type="text/css" />
</head>
@@ -16,10 +17,10 @@
<td align="left" valign="middle"><div class="pageTitle">Galaxy${brand}</div></td>
<td align="right" valign="middle">
- Info: <a href="${bugs_email}">report bugs</a>
- | <a target="_blank" href="${wiki_url}">wiki</a>
- | <a target="_blank" href="${screencasts_url}">screencasts</a>
- | <a target="_blank" href="${blog_url}">blog</a>
+ ${_('Info: ')}<a href="${bugs_email}">${_('report bugs')}</a>
+ | <a target="_blank" href="${wiki_url}">${_('wiki')}</a>
+ | <a target="_blank" href="${screencasts_url}">${_('screencasts')}</a>
+ | <a target="_blank" href="${blog_url}">${_('blog')}</a>
<!-- | <a target="mainframe" href="/static/index_frame_tools.html">tools</a>
| <a target="mainframe" href="/static/index_frame_history.html">history</a> -->
@@ -27,11 +28,11 @@
Logged in as ${t.user.email}
%else:
%if t.user:
- Logged in as ${t.user.email}: <a target="galaxy_main" href="${h.url_for( controller='user', action='index' )}">manage</a>
- | <a target="galaxy_main" href="${h.url_for( controller='user', action='logout' )}">logout</a>
+ ${_('Logged in as %s: ') % t.user.email}<a target="galaxy_main" href="${h.url_for( controller='user', action='index' )}">${_('manage')}</a>
+ | <a target="galaxy_main" href="${h.url_for( controller='user', action='logout' )}">${_('logout')}</a>
%else:
- Account: <a target="galaxy_main" href="${h.url_for( controller='user', action='create' )}">create</a>
- | <a target="galaxy_main" href="${h.url_for( controller='user', action='login' )}">login</a>
+ ${_('Account: ')}<a target="galaxy_main" href="${h.url_for( controller='user', action='create' )}">${_('create')}</a>
+ | <a target="galaxy_main" href="${h.url_for( controller='user', action='login' )}">${_('login')}</a>
%endif
%endif
diff -r ab1b5bd846bc -r dc62ee52012e templates/root/tool_menu.mako
--- a/templates/root/tool_menu.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/root/tool_menu.mako Tue Mar 17 22:46:47 2009 -0400
@@ -16,7 +16,7 @@
## %if "[[" in tool.description and "]]" in tool.description:
## ${tool.description.replace( '[[', '<a href="link" target="galaxy_main">' % $tool.id ).replace( "]]", "</a>" )
%if tool.name:
- <a id="link-${tool.id}" href="${link}" target="galaxy_main" minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${tool.name}</a> ${tool.description}
+ <a id="link-${tool.id}" href="${link}" target="galaxy_main" minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${_(tool.name)}</a> ${tool.description}
%else:
<a id="link-${tool.id}" href="${link}" target="galaxy_main" minsizehint="${tool.uihints.get( 'minwidth', -1 )}">${tool.description}</a>
%endif
@@ -32,7 +32,7 @@
<div class="toolTitleNoSection">
%endif
<% encoded_id = key.lstrip( 'workflow_' ) %>
- <a id="link-${workflow.id}" href="${ h.url_for( controller='workflow', action='run', id=encoded_id, check_user=False )}" target="galaxy_main"}">${workflow.name}</a>
+ <a id="link-${workflow.id}" href="${ h.url_for( controller='workflow', action='run', id=encoded_id, check_user=False )}" target="galaxy_main">${workflow.name}</a>
</div>
</%def>
@@ -48,8 +48,8 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
- <title>Galaxy Tools</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>${_('Galaxy Tools')}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=${_('iso-8859-1')}" />
<link href="${h.url_for('/static/style/base.css')}" rel="stylesheet" type="text/css" />
<link href="${h.url_for('/static/style/tool_menu.css')}" rel="stylesheet" type="text/css" />
@@ -125,17 +125,17 @@
<div class="toolSectionPad"></div>
<div class="toolSectionPad"></div>
<div class="toolSectionTitle" id="title_XXinternalXXworkflow">
- <span>Workflow <i>(beta)</i></span>
+ <span>${_('Workflow')} <i>(beta)</i></span>
</div>
<div id="XXinternalXXworkflow" class="toolSectionBody">
<div class="toolSectionBg">
<div class="toolTitle">
- <a href="${h.url_for( controller='workflow', action='index' )}" target="galaxy_main">Manage</a> workflows
+ <a href="${h.url_for( controller='workflow', action='index' )}" target="galaxy_main">${_('Manage')}</a> ${_('workflows')}
</div>
%if t.user:
%for m in t.user.stored_workflow_menu_entries:
<div class="toolTitle">
- <a href="${h.url_for( controller='workflow', action='run', id=trans.security.encode_id(m.stored_workflow_id) )}" target="galaxy_main">${m.stored_workflow.name}</a>
+ <a href="${h.url_for( controller='workflow', action='run', id=trans.security.encode_id(m.stored_workflow_id) )}" target="galaxy_main">${_(m.stored_workflow.name)}</a>
</div>
%endfor
%endif
diff -r ab1b5bd846bc -r dc62ee52012e templates/user/index.mako
--- a/templates/user/index.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/user/index.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,19 +1,19 @@
<%inherit file="/base.mako"/>
-<%def name="title()">Account settings</%def>
+<%def name="title()">${_('Account settings')}</%def>
-<h1>Account settings</h1>
+<h1>${_('Account settings')}</h1>
%if user:
- <p>You are currently logged in as ${user.email}.</p>
+ <p>${_('You are currently logged in as %s.') % user.email}</p>
<ul>
- <li><a href="${h.url_for( action='change_password' )}">Change your password</a></li>
- <li><a href="${h.url_for( action='change_email' )}">Update your email address</a></li>
- <li><a href="${h.url_for( action='logout' )}">Logout</a></li>
+ <li><a href="${h.url_for( action='change_password' )}">${_('Change your password')}</a></li>
+ <li><a href="${h.url_for( action='change_email' )}">${_('Update your email address')}</a></li>
+ <li><a href="${h.url_for( action='logout' )}">${_('Logout')}</a></li>
</ul>
%else:
- <p>You are currently not logged in.</p>
+ <p>${n_('You are currently not logged in.')}</p>
<ul>
- <li><a href="${h.url_for( action='login' )}">Login</li>
- <li><a href="${h.url_for( action='create' )}">Create new account</a></li>
+ <li><a href="${h.url_for( action='login' )}">${_('Login')}</li>
+ <li><a href="${h.url_for( action='create' )}">${_('Create new account')}</a></li>
</ul>
%endif
\ No newline at end of file
diff -r ab1b5bd846bc -r dc62ee52012e templates/workflow/build_from_current_history.mako
--- a/templates/workflow/build_from_current_history.mako Sun Mar 08 14:25:19 2009 -0400
+++ b/templates/workflow/build_from_current_history.mako Tue Mar 17 22:46:47 2009 -0400
@@ -1,3 +1,4 @@
+<% _ = t.gettext %>
<!-- -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
@@ -49,7 +50,7 @@
</table>
%if disabled:
<hr>
- <div><input type="checkbox" name="dataset_ids" value="${data.hid}" checked="true" />Treat as input dataset</div>
+ <div><input type="checkbox" name="dataset_ids" value="${data.hid}" checked="true" />${_('Treat as input dataset')}</div>
%endif
</div>
</%def>
@@ -67,17 +68,17 @@
<form method="post" action="${h.url_for()}">
<div class='form-row'>
- <label>Workflow name</label>
+ <label>${_('Workflow name')}</label>
<input name="workflow_name" type="text" value="Workflow constructed from history '${history.name}'" size="60"/>
</div>
-<p><input type="submit" value="Create Workflow" /></p>
+<p><input type="submit" value="${_('Create Workflow')}" /></p>
<table border="0" cellspacing="0">
<tr>
- <th style="width: 47.5%">Tool</th>
+ <th style="width: 47.5%">${_('Tool')}</th>
<th style="width: 5%"></th>
- <th style="width: 47.5%">History items created</th>
+ <th style="width: 47.5%">${_('History items created')}</th>
</tr>
%for job, datasets in jobs.iteritems():
diff -r ab1b5bd846bc -r dc62ee52012e test/functional/__init__.py
--- a/test/functional/__init__.py Sun Mar 08 14:25:19 2009 -0400
+++ b/test/functional/__init__.py Tue Mar 17 22:46:47 2009 -0400
@@ -25,6 +25,7 @@
default_galaxy_test_host = "localhost"
default_galaxy_test_port = "9999"
+default_galaxy_locales = 'en'
galaxy_test_file_dir = "test-data"
server = None
app = None
@@ -35,6 +36,8 @@
galaxy_test_host = os.environ.get( 'GALAXY_TEST_HOST', default_galaxy_test_host )
galaxy_test_port = os.environ.get( 'GALAXY_TEST_PORT', default_galaxy_test_port )
+ if 'HTTP_ACCEPT_LANGUAGE' not in os.environ:
+ os.environ['HTTP_ACCEPT_LANGUAGE'] = default_galaxy_locales
start_server = 'GALAXY_TEST_EXTERNAL' not in os.environ
1
0
08 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/082c6cf528bf
changeset: 1736:082c6cf528bf
user: Dan Blankenberg <dan(a)bx.psu.edu>
date: Wed Mar 04 11:57:20 2009 -0500
description:
Quick fix for Wiggle.set_meta(). No longer scans the entire file when using floating point data values or when contents are BED or variableStep.
1 file(s) affected in this change:
lib/galaxy/datatypes/interval.py
diffs (21 lines):
diff -r 9fb93cfc2449 -r 082c6cf528bf lib/galaxy/datatypes/interval.py
--- a/lib/galaxy/datatypes/interval.py Thu Feb 19 16:25:05 2009 -0500
+++ b/lib/galaxy/datatypes/interval.py Wed Mar 04 11:57:20 2009 -0500
@@ -715,12 +715,16 @@
if line and not line.startswith( '#' ):
elems = line.split( '\t' )
try:
- int( elems[0] )
+ float( elems[0] ) #"Wiggle track data values can be integer or real, positive or negative values"
break
except:
+ do_break = False
for str in data.col1_startswith:
if elems[0].lower().startswith(str):
+ do_break = True
break
+ if do_break:
+ break
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = i )
def sniff( self, filename ):
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/0c77238cb1ba
changeset: 1737:0c77238cb1ba
user: guru
date: Thu Mar 05 13:02:17 2009 -0500
description:
Adding a tiny fix to scatter plot tool.
1 file(s) affected in this change:
tools/plotting/scatterplot.py
diffs (21 lines):
diff -r 082c6cf528bf -r 0c77238cb1ba tools/plotting/scatterplot.py
--- a/tools/plotting/scatterplot.py Wed Mar 04 11:57:20 2009 -0500
+++ b/tools/plotting/scatterplot.py Thu Mar 05 13:02:17 2009 -0500
@@ -25,7 +25,7 @@
first_invalid_line = 0
invalid_value = ''
invalid_column = 0
-
+ i = 0
for i, line in enumerate( file( in_fname ) ):
valid = True
line = line.rstrip( '\r\n' )
@@ -67,7 +67,7 @@
except Exception, exc:
stop_err( "%s" %str( exc ) )
else:
- stop_err( "All values in both columns %s and %s are non-numeric." % ( sys.argv[3], sys.argv[4] ) )
+ stop_err( "All values in both columns %s and %s are non-numeric or empty." % ( sys.argv[3], sys.argv[4] ) )
print "Scatter plot on columns %s, %s. " % ( sys.argv[3], sys.argv[4] )
if skipped_lines > 0:
1
0
08 Mar '09
details: http://www.bx.psu.edu/hg/galaxy/rev/ab1b5bd846bc
changeset: 1738:ab1b5bd846bc
user: guru
date: Sun Mar 08 14:25:19 2009 -0400
description:
Modified help for \"get Indels\" tool, and made some small changes to the perl script.
2 file(s) affected in this change:
tools/regVariation/getIndels_3way.xml
tools/regVariation/parseMAF_smallIndels.pl
diffs (312 lines):
diff -r 0c77238cb1ba -r ab1b5bd846bc tools/regVariation/getIndels_3way.xml
--- a/tools/regVariation/getIndels_3way.xml Thu Mar 05 13:02:17 2009 -0500
+++ b/tools/regVariation/getIndels_3way.xml Sun Mar 08 14:25:19 2009 -0400
@@ -1,4 +1,4 @@
-<tool id="indels_3way" name="Fetch Indels" version="1.0.1">
+<tool id="indels_3way" name="Fetch Indels" version="1.0.2">
<description> from 3-way alignments</description>
<command interpreter="perl">
parseMAF_smallIndels.pl $input1 $out_file1 $outgroup
@@ -30,7 +30,14 @@
**What it does**
-This tool estimates the indel type and length for each of the 3-way alignments in the input MAF file.
+This tool consists of the first module from the computational pipeline to identify indels as described in Kvikstad et al., 2007. Note that the generated output does not include subsequent filtering steps.
+
+Deletions in a particular species are identified as one or more consecutive gap columns within an alignment block, given that the orthologous positions in the other two species contain nucleotides of
+equal length.
+Similarly, insertions in a particular species are identified as one or more consecutive nucleotide columns within an alignment block, given that the orthologous positions in the other two
+species contain gaps.
+
+*Kvikstad E. M. et al. (2007). A Macaques-Eye View of Human Insertions and Deletions: Differences in Mechanisms. PLoS Computational Biology 3(9):e176*
-----
diff -r 0c77238cb1ba -r ab1b5bd846bc tools/regVariation/parseMAF_smallIndels.pl
--- a/tools/regVariation/parseMAF_smallIndels.pl Thu Mar 05 13:02:17 2009 -0500
+++ b/tools/regVariation/parseMAF_smallIndels.pl Sun Mar 08 14:25:19 2009 -0400
@@ -163,7 +163,7 @@
sub get_indels_within_block{
my (@sequences) = @_;
my $line1 = my $line2 = my $line3 = "";
- my @line1 = my @line2 = my @line3 = ();
+ my @line1 = my @line2 = my @line3 = ();
my $score = 0;
my $start1 = my $align_length1 = my $end1 = my $seq_length1 = 0;
my $start2 = my $align_length2 = my $end2 = my $seq_length2 = 0;
@@ -182,7 +182,7 @@
my @array_return = ();
my $test1 = 0;
my $line1_stat = my $line2_stat = my $line3_stat = "";
-
+
# process 3-way blocks only
if (scalar(@sequences) == 3){
$line1 = $sequences[0];
@@ -194,143 +194,128 @@
# check order of sequences and assign uniformly seq1= human, seq2 = chimp, seq3 = macaque
if ($line1 =~ m/$outgroup/){
$line1_stat = "out";
- $line2_stat = "in";
- $line3_stat = "in";}
+ $line2=~ s/^\s*//;
+ $line2 =~ s/\s+/\t/g;
+ @line2 = split(/\t/, $line2);
+ if (($ingroup1 eq "") || ($line2[1] =~ m/$ingroup1/)){
+ $line2_stat = "in1";
+ $line3_stat = "in2";
+ }
+ else{
+ $line3_stat = "in1";
+ $line2_stat = "in2"; }
+ }
elsif ($line2 =~ m/$outgroup/){
$line2_stat = "out";
- $line1_stat = "in";
- $line3_stat = "in";}
+ $line1=~ s/^\s*//;
+ $line1 =~ s/\s+/\t/g;
+ @line1 = split(/\t/, $line1);
+ if (($ingroup1 eq "") || ($line1[1] =~ m/$ingroup1/)){
+ $line1_stat = "in1";
+ $line3_stat = "in2";
+ }
+ else{
+ $line3_stat = "in1";
+ $line1_stat = "in2"; }
+ }
elsif ($line3 =~ m/$outgroup/){
$line3_stat = "out";
- $line1_stat = "in";
- $line2_stat = "in";}
+ $line1=~ s/^\s*//;
+ $line1 =~ s/\s+/\t/g;
+ @line1 = split(/\t/, $line1);
+ if (($ingroup1 eq "") || ($line1[1] =~ m/$ingroup1/)){
+ $line1_stat = "in1";
+ $line2_stat = "in2";
+ }
+ else{
+ $line2_stat = "in1";
+ $line1_stat = "in2"; }
+ }
#print "# l1 = $line1_stat\n";
#print "# l2 = $line2_stat\n";
#print "# l3 = $line3_stat\n";
-
- if ($line1_stat eq "in"){
- $line1=~ s/^\s*//;
- $line1 =~ s/\s+/\t/g;
- @line1 = split(/\t/, $line1);
- $end1 =($line1[2]+$line1[3]-1);
- $seq1 = $line1[1].":".$line1[3];
- $ingroup1 = (split(/\./, $seq1))[0];
- $start1 = $line1[2];
- $align_length1 = $line1[3];
- $orient1 = $line1[4];
- $seq_length1 = $line1[5];
- $sequence1 = $line1[6];
- $test1 = length($sequence1);
- my $total_length1 = $test1+$start1;
- my @array1 = ($start1,$end1,$orient1,$seq_length1);
- ($start1_plus, $end1_plus) = convert_coords(@array1);
- }
- elsif ($line1_stat eq "out"){
- $line1=~ s/^\s*//;
- $line1 =~ s/\s+/\t/g;
- @line1 = split(/\t/, $line1);
- $end3 =($line1[2]+$line1[3]-1);
- $seq3 = $line1[1].":".$line1[3];
- $start3 = $line1[2];
- $align_length3 = $line1[3];
- $orient3 = $line1[4];
- $seq_length3 = $line1[5];
- $sequence3 = $line1[6];
- my $test3 = length($sequence3);
- my $total_length3 = $test3+$start3;
- my @array3 = ($start3,$end3,$orient3,$seq_length3);
- ($start3_plus, $end3_plus) = convert_coords(@array3);
- }
-
- if (($line1_stat eq "in") && ($line2_stat eq "in")){
- $line2=~ s/^\s*//;
- $line2 =~ s/\s+/\t/g;
- @line2 = split(/\t/, $line2);
- $end2 =($line2[2]+$line2[3]-1);
- $seq2 = $line2[1].":".$line2[3];
- $ingroup2 = (split(/\./, $seq2))[0];
- $start2 = $line2[2];
- $align_length2 = $line2[3];
- $orient2 = $line2[4];
- $seq_length2 = $line2[5];
- $sequence2 = $line2[6];
- my $test2 = length($sequence2);
- my $total_length2 = $test2+$start2;
- my @array2 = ($start2,$end2,$orient2,$seq_length2);
- ($start2_plus, $end2_plus) = convert_coords(@array2);
- }
- elsif (($line1_stat eq "in") && ($line2_stat eq "out")){
- $line2=~ s/^\s*//;
- $line2 =~ s/\s+/\t/g;
- @line2 = split(/\t/, $line2);
- $end3 =($line2[2]+$line2[3]-1);
- $seq3 = $line2[1].":".$line2[3];
- $start3 = $line2[2];
- $align_length3 = $line2[3];
- $orient3 = $line2[4];
- $seq_length3 = $line2[5];
- $sequence3 = $line2[6];
- my $test3 = length($sequence3);
- my $total_length3 = $test3+$start3;
- my @array3 = ($start3,$end3,$orient3,$seq_length3);
- ($start3_plus, $end3_plus) = convert_coords(@array3);
- }
- elsif ($line1_stat eq "out"){
- $line2=~ s/^\s*//;
- $line2 =~ s/\s+/\t/g;
- @line2 = split(/\t/, $line2);
- $end1 =($line2[2]+$line2[3]-1);
- $seq1 = $line2[1].":".$line2[3];
- $ingroup1 = (split(/\./, $seq1))[0];
- $start1 = $line2[2];
- $align_length1 = $line2[3];
- $orient1 = $line2[4];
- $seq_length1 = $line2[5];
- $sequence1 = $line2[6];
- $test1 = length($sequence1);
- my $total_length1 = $test1+$start1;
- my @array1 = ($start1,$end1,$orient1,$seq_length1);
- ($start1_plus, $end1_plus) = convert_coords(@array1);
- }
+ my $linei1 = my $linei2 = my $lineo = "";
+ my @linei1 = my @linei2 = my @lineo = ();
- if ((($line1_stat eq "in") or ($line2_stat eq "in")) && ($line3_stat eq "in")){
- $line3=~ s/^\s*//;
- $line3 =~ s/\s+/\t/g;
- @line3 = split(/\t/, $line3);
- $end2 =($line3[2]+$line3[3]-1);
- $seq2 = $line3[1].":".$line3[3];
- $ingroup2 = (split(/\./, $seq2))[0];
- $start2 = $line3[2];
- $align_length2 = $line3[3];
- $orient2 = $line3[4];
- $seq_length2 = $line3[5];
- $sequence2 = $line3[6];
- my $test2 = length($sequence2);
- my $total_length2 = $test2+$start2;
- my @array2 = ($start2,$end2,$orient2,$seq_length2);
- ($start2_plus, $end2_plus) = convert_coords(@array2);
- }
- elsif ($line3_stat eq "out"){
- $line3=~ s/^\s*//;
- $line3 =~ s/\s+/\t/g;
- @line3 = split(/\t/, $line3);
- $end3 =($line3[2]+$line3[3]-1);
- $seq3 = $line3[1].":".$line3[3];
- $start3 = $line3[2];
- $align_length3 = $line3[3];
- $orient3 = $line3[4];
- $seq_length3 = $line3[5];
- $sequence3 = $line3[6];
- my $test3 = length($sequence3);
- my $total_length3 = $test3+$start3;
- my @array3 = ($start3,$end3,$orient3,$seq_length3);
- ($start3_plus, $end3_plus) = convert_coords(@array3);
- }
-
-
-
- #print "# l1 = $ingroup1\n";
+ if ($line1_stat eq "out"){
+ $lineo = $line1;
+ }
+ elsif ($line1_stat eq "in1"){
+ $linei1 = $line1;
+ }
+ else{
+ $linei2 = $line1;
+ }
+
+ if ($line2_stat eq "out"){
+ $lineo = $line2;
+ }
+ elsif ($line2_stat eq "in1"){
+ $linei1 = $line2;
+ }
+ else{
+ $linei2 = $line2;
+ }
+
+ if ($line3_stat eq "out"){
+ $lineo = $line3;
+ }
+ elsif ($line3_stat eq "in1"){
+ $linei1 = $line3;
+ }
+ else{
+ $linei2 = $line3;
+ }
+
+ $linei1=~ s/^\s*//;
+ $linei1 =~ s/\s+/\t/g;
+ @linei1 = split(/\t/, $linei1);
+ $end1 =($linei1[2]+$linei1[3]-1);
+ $seq1 = $linei1[1].":".$linei1[3];
+ $ingroup1 = (split(/\./, $seq1))[0];
+ $start1 = $linei1[2];
+ $align_length1 = $linei1[3];
+ $orient1 = $linei1[4];
+ $seq_length1 = $linei1[5];
+ $sequence1 = $linei1[6];
+ $test1 = length($sequence1);
+ my $total_length1 = $test1+$start1;
+ my @array1 = ($start1,$end1,$orient1,$seq_length1);
+ ($start1_plus, $end1_plus) = convert_coords(@array1);
+
+ $linei2=~ s/^\s*//;
+ $linei2 =~ s/\s+/\t/g;
+ @linei2 = split(/\t/, $linei2);
+ $end2 =($linei2[2]+$linei2[3]-1);
+ $seq2 = $linei2[1].":".$linei2[3];
+ $ingroup2 = (split(/\./, $seq2))[0];
+ $start2 = $linei2[2];
+ $align_length2 = $linei2[3];
+ $orient2 = $linei2[4];
+ $seq_length2 = $linei2[5];
+ $sequence2 = $linei2[6];
+ my $test2 = length($sequence2);
+ my $total_length2 = $test2+$start2;
+ my @array2 = ($start2,$end2,$orient2,$seq_length2);
+ ($start2_plus, $end2_plus) = convert_coords(@array2);
+
+ $lineo=~ s/^\s*//;
+ $lineo =~ s/\s+/\t/g;
+ @lineo = split(/\t/, $lineo);
+ $end3 =($lineo[2]+$lineo[3]-1);
+ $seq3 = $lineo[1].":".$lineo[3];
+ $start3 = $lineo[2];
+ $align_length3 = $lineo[3];
+ $orient3 = $lineo[4];
+ $seq_length3 = $lineo[5];
+ $sequence3 = $lineo[6];
+ my $test3 = length($sequence3);
+ my $total_length3 = $test3+$start3;
+ my @array3 = ($start3,$end3,$orient3,$seq_length3);
+ ($start3_plus, $end3_plus) = convert_coords(@array3);
+
+ #print "# l1 = $ingroup1\n";
#print "# l2 = $ingroup2\n";
#print "# l3 = $outgroup\n";
@@ -592,7 +577,7 @@
}
for ($counter3 = 0; $counter3 < @seq2_insert_startOnly; $counter3++){
- $final_line3 = join("\t",($seq2_insert_startOnly[$counter3],$seq2_insert_lengths[$counter3]));
+ $final_line3 = join("\t",($seq2_insert_startOnly[$counter3],$seq2_insert_lengths[$counter3]));
push(@final3,$final_line3);
}
1
0