Provide for a way to internationalize the "ago" times in the pages.
(need to put instructions somewhere, but in brief:) An admin can create a KV file in the [i18n] domain: kv_files = [i18n]data/%lang%-text.conf That KV file should have a [time] section and options named %(name)_singular and %(name)_plural, where name is one of: second, minute, hour, day, week, month, year. Each of the values should be like: %d second. Additionally, one option name "little_time" with a value like: very little time (e.g. no format specifier). git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@417 8cb11bc2-c004-0410-86c3-e597b4017df7remotes/tags/V0_9
parent
b41bd99aa3
commit
f46fed363e
|
@ -368,13 +368,6 @@ def download_url(request, url, revision, mime_type):
|
||||||
return url + '&content-type=' + mime_type
|
return url + '&content-type=' + mime_type
|
||||||
return url
|
return url
|
||||||
|
|
||||||
def plural(num, text):
|
|
||||||
if num == 1:
|
|
||||||
return '1 ' + text
|
|
||||||
if num:
|
|
||||||
return '%d %ss' % (num, text)
|
|
||||||
return ''
|
|
||||||
|
|
||||||
_time_desc = {
|
_time_desc = {
|
||||||
1 : 'second',
|
1 : 'second',
|
||||||
60 : 'minute',
|
60 : 'minute',
|
||||||
|
@ -384,10 +377,36 @@ _time_desc = {
|
||||||
2628000 : 'month',
|
2628000 : 'month',
|
||||||
31536000 : 'year',
|
31536000 : 'year',
|
||||||
}
|
}
|
||||||
def html_time(secs, extended=0):
|
|
||||||
|
def get_time_text(request, interval, num):
|
||||||
|
"Get some time text, possibly internationalized."
|
||||||
|
### some languages have even harder pluralization rules. we'll have to
|
||||||
|
### deal with those on demand
|
||||||
|
if num == 0:
|
||||||
|
return ''
|
||||||
|
text = _time_desc[interval]
|
||||||
|
if num == 1:
|
||||||
|
attr = text + '_singular'
|
||||||
|
fmt = '%d ' + text
|
||||||
|
else:
|
||||||
|
attr = text + '_plural'
|
||||||
|
fmt = '%d ' + text + 's'
|
||||||
|
try:
|
||||||
|
fmt = getattr(request.kv.i18n.time, attr)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
return fmt % num
|
||||||
|
|
||||||
|
def little_time(request):
|
||||||
|
try:
|
||||||
|
return request.kv.i18n.time.little_time
|
||||||
|
except AttributeError:
|
||||||
|
return 'very little time'
|
||||||
|
|
||||||
|
def html_time(request, secs, extended=0):
|
||||||
secs = long(time.time()) - secs
|
secs = long(time.time()) - secs
|
||||||
if secs < 2:
|
if secs < 2:
|
||||||
return 'very little time'
|
return little_time(request)
|
||||||
breaks = _time_desc.keys()
|
breaks = _time_desc.keys()
|
||||||
breaks.sort()
|
breaks.sort()
|
||||||
i = 0
|
i = 0
|
||||||
|
@ -396,13 +415,14 @@ def html_time(secs, extended=0):
|
||||||
break
|
break
|
||||||
i = i + 1
|
i = i + 1
|
||||||
value = breaks[i - 1]
|
value = breaks[i - 1]
|
||||||
s = plural(secs / value, _time_desc[value])
|
s = get_time_text(request, value, secs / value)
|
||||||
|
|
||||||
if extended and i > 1:
|
if extended and i > 1:
|
||||||
secs = secs % value
|
secs = secs % value
|
||||||
value = breaks[i - 2]
|
value = breaks[i - 2]
|
||||||
ext = plural(secs / value, _time_desc[value])
|
ext = get_time_text(request, value, secs / value)
|
||||||
if ext:
|
if ext:
|
||||||
|
### this is not i18n compatible. pass on it for now
|
||||||
s = s + ', ' + ext
|
s = s + ', ' + ext
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
@ -589,7 +609,7 @@ def markup_stream(request, fp, revision, mime_type):
|
||||||
|
|
||||||
data.update({
|
data.update({
|
||||||
'utc_date' : time.asctime(time.gmtime(entry.date)),
|
'utc_date' : time.asctime(time.gmtime(entry.date)),
|
||||||
'ago' : html_time(entry.date, 1),
|
'ago' : html_time(request, entry.date, 1),
|
||||||
'author' : entry.author,
|
'author' : entry.author,
|
||||||
'branches' : None,
|
'branches' : None,
|
||||||
'tags' : None,
|
'tags' : None,
|
||||||
|
@ -1290,7 +1310,7 @@ def view_directory(request):
|
||||||
unreadable = 1
|
unreadable = 1
|
||||||
elif info:
|
elif info:
|
||||||
row.cvs = 'data'
|
row.cvs = 'data'
|
||||||
row.time = html_time(info[1])
|
row.time = html_time(request, info[1])
|
||||||
row.author = info[3]
|
row.author = info[3]
|
||||||
|
|
||||||
if cfg.options.use_cvsgraph:
|
if cfg.options.use_cvsgraph:
|
||||||
|
@ -1345,7 +1365,7 @@ def view_directory(request):
|
||||||
|
|
||||||
row.rev_href = file_url + '?rev=' + row.rev + request.amp_query
|
row.rev_href = file_url + '?rev=' + row.rev + request.amp_query
|
||||||
|
|
||||||
row.time = html_time(info[1])
|
row.time = html_time(request, info[1])
|
||||||
|
|
||||||
if cfg.options.use_cvsgraph:
|
if cfg.options.use_cvsgraph:
|
||||||
row.graph_href = file_url + '?graph=' + row.rev + request.amp_query
|
row.graph_href = file_url + '?graph=' + row.rev + request.amp_query
|
||||||
|
@ -1591,7 +1611,7 @@ def augment_entry(entry, request, file_url, rev_map, rev2tag, branch_points,
|
||||||
entry.vendor_branch = ezt.boolean(_re_is_vendor_branch.match(rev))
|
entry.vendor_branch = ezt.boolean(_re_is_vendor_branch.match(rev))
|
||||||
|
|
||||||
entry.utc_date = time.asctime(time.gmtime(entry.date))
|
entry.utc_date = time.asctime(time.gmtime(entry.date))
|
||||||
entry.ago = html_time(entry.date, 1)
|
entry.ago = html_time(request, entry.date, 1)
|
||||||
|
|
||||||
entry.branches = prep_tags(query_dict, file_url, rev2tag.get(branch, [ ]))
|
entry.branches = prep_tags(query_dict, file_url, rev2tag.get(branch, [ ]))
|
||||||
entry.tags = prep_tags(query_dict, file_url, rev2tag.get(rev, [ ]))
|
entry.tags = prep_tags(query_dict, file_url, rev2tag.get(rev, [ ]))
|
||||||
|
|
Loading…
Reference in New Issue