commit rubygem-gettext_i18n_rails_js for openSUSE:Factory
Hello community,
here is the log from the commit of package rubygem-gettext_i18n_rails_js for openSUSE:Factory checked in at 2015-02-27 10:59:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-gettext_i18n_rails_js (Old)
and /work/SRC/openSUSE:Factory/.rubygem-gettext_i18n_rails_js.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-gettext_i18n_rails_js"
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-gettext_i18n_rails_js/rubygem-gettext_i18n_rails_js.changes 2015-02-25 02:18:22.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.rubygem-gettext_i18n_rails_js.new/rubygem-gettext_i18n_rails_js.changes 2015-02-27 10:59:39.000000000 +0100
@@ -1,0 +2,5 @@
+Wed Feb 25 05:30:45 UTC 2015 - coolo@suse.com
+
+- updated to version 1.0.1
+
+-------------------------------------------------------------------
Old:
----
gettext_i18n_rails_js-1.0.0.gem
New:
----
gettext_i18n_rails_js-1.0.1.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-gettext_i18n_rails_js.spec ++++++
--- /var/tmp/diff_new_pack.qEr0Xi/_old 2015-02-27 10:59:40.000000000 +0100
+++ /var/tmp/diff_new_pack.qEr0Xi/_new 2015-02-27 10:59:40.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-gettext_i18n_rails_js
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,14 +24,14 @@
#
Name: rubygem-gettext_i18n_rails_js
-Version: 1.0.0
+Version: 1.0.1
Release: 0
%define mod_name gettext_i18n_rails_js
%define mod_full_name %{mod_name}-%{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: ruby-macros >= 5
BuildRequires: %{ruby >= 1.9.3}
BuildRequires: %{rubygem gem2rpm}
+BuildRequires: ruby-macros >= 5
Url: https://github.com/webhippie/gettext_i18n_rails_js
Source: http://rubygems.org/gems/%{mod_full_name}.gem
Source1: gem2rpm.yml
@@ -51,7 +51,7 @@
%install
%gem_install \
- --doc-files="CHANGELOG.md README.md LICENSE" \
+ --doc-files="CHANGELOG.md LICENSE README.md" \
-f
%gem_packages
++++++ gettext_i18n_rails_js-1.0.0.gem -> gettext_i18n_rails_js-1.0.1.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100
+++ new/CHANGELOG.md 2015-02-24 20:48:08.000000000 +0100
@@ -1,6 +1,10 @@
# Changelog
-## [0.1.0](https://github.com/webhippie/gettext_i18n_rails_js/releases/tag/v0.1.0) - 2015-02-24
+## [1.0.1](https://github.com/webhippie/gettext_i18n_rails_js/releases/tag/v1.0.1) - 2015-02-24
+
+* Added missing javascripts to the gemspec
+
+## [1.0.0](https://github.com/webhippie/gettext_i18n_rails_js/releases/tag/v1.0.0) - 2015-02-24
* Transfer from github.com/nubis/gettext_i18n_rails_js
* Added TravisCI, Rubocop and Coveralls
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/assets/javascripts/gettext/all.js new/lib/assets/javascripts/gettext/all.js
--- old/lib/assets/javascripts/gettext/all.js 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/assets/javascripts/gettext/all.js 2015-02-24 20:48:08.000000000 +0100
@@ -0,0 +1,56 @@
+//
+// Copyright (c) 2012-2015 Dropmysite.com https://dropmyemail.com
+// Copyright (c) 2015 Webhippie http://www.webhippie.de
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//= require gettext/jed
+//= require_self
+
+(function() {
+ var locales = locales || {};
+ var locale = document.getElementsByTagName('html')[0].lang;
+
+ if(!locale) {
+ console.warn('No locale found as an html attribute, using default.');
+ return;
+ }
+
+ var i18n = new Jed(locales[locale] || {});
+
+ window.__ = function() {
+ return i18n.gettext.apply(i18n, arguments);
+ };
+
+ window.n__ = function() {
+ return i18n.ngettext.apply(i18n, arguments);
+ };
+
+ window.s__ = function(key) {
+ return window.__(key).split('|').pop();
+ };
+
+ window.gettext = window.__;
+ window.ngettext = window.n__;
+ window.sgettext = window.s__;
+
+ window.i18n = i18n;
+})();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/gettext_i18n_rails_js/version.rb new/lib/gettext_i18n_rails_js/version.rb
--- old/lib/gettext_i18n_rails_js/version.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/gettext_i18n_rails_js/version.rb 2015-02-24 20:48:08.000000000 +0100
@@ -27,7 +27,7 @@
class Version
MAJOR = 1
MINOR = 0
- PATCH = 0
+ PATCH = 1
PRE = nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 1970-01-01 01:00:00.000000000 +0100
+++ new/metadata 2015-02-24 20:48:08.000000000 +0100
@@ -1,7 +1,7 @@
--- !ruby/object:Gem::Specification
name: gettext_i18n_rails_js
version: !ruby/object:Gem::Version
- version: 1.0.0
+ version: 1.0.1
platform: ruby
authors:
- Thomas Boerger
@@ -15,112 +15,112 @@
name: bundler
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rake
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: yard
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rspec
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
name: rails
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 3.2.0
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 3.2.0
- !ruby/object:Gem::Dependency
name: gettext
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 3.0.2
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 3.0.2
- !ruby/object:Gem::Dependency
name: gettext_i18n_rails
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 0.7.1
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 0.7.1
- !ruby/object:Gem::Dependency
name: po_to_json
requirement: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 0.1.0
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 0.1.0
description: |2
@@ -136,24 +136,26 @@
extra_rdoc_files: []
files:
- CHANGELOG.md
-- README.md
- LICENSE
-- lib/tasks/gettext_i18n_rails_js_tasks.rake
+- README.md
+- lib/assets/javascripts/gettext/all.js
- lib/gettext_i18n_rails_js.rb
-- lib/gettext_i18n_rails_js/version.rb
- lib/gettext_i18n_rails_js/engine.rb
+- lib/gettext_i18n_rails_js/parser.rb
- lib/gettext_i18n_rails_js/parser/base.rb
- lib/gettext_i18n_rails_js/parser/handlebars.rb
- lib/gettext_i18n_rails_js/parser/javascript.rb
-- lib/gettext_i18n_rails_js/parser.rb
-- spec/spec_helper.rb
+- lib/gettext_i18n_rails_js/version.rb
+- lib/tasks/gettext_i18n_rails_js_tasks.rake
- spec/fixtures/example.coffee
-- spec/fixtures/example.js
- spec/fixtures/example.handlebars
-- spec/support/with_file.rb
-- spec/gettext_i18n_rails_js_spec.rb
+- spec/fixtures/example.js
- spec/gettext_i18n_rails_js/parser/handlebars_spec.rb
- spec/gettext_i18n_rails_js/parser/javascript_spec.rb
+- spec/gettext_i18n_rails_js_spec.rb
+- spec/spec_helper.rb
+- spec/support/with_file.rb
+- vendor/assets/javascripts/gettext/jed.js
homepage: https://github.com/webhippie/gettext_i18n_rails_js
licenses:
- MIT
@@ -164,28 +166,28 @@
- lib
required_ruby_version: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: 1.9.3
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - - '>='
+ - - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
rubyforge_project:
-rubygems_version: 2.0.3
+rubygems_version: 2.4.5
signing_key:
specification_version: 4
summary: Extends gettext_i18n_rails making your .po files available to client side
javascript as JSON
test_files:
-- spec/spec_helper.rb
- spec/fixtures/example.coffee
-- spec/fixtures/example.js
- spec/fixtures/example.handlebars
-- spec/support/with_file.rb
-- spec/gettext_i18n_rails_js_spec.rb
+- spec/fixtures/example.js
- spec/gettext_i18n_rails_js/parser/handlebars_spec.rb
- spec/gettext_i18n_rails_js/parser/javascript_spec.rb
+- spec/gettext_i18n_rails_js_spec.rb
+- spec/spec_helper.rb
+- spec/support/with_file.rb
has_rdoc:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/assets/javascripts/gettext/jed.js new/vendor/assets/javascripts/gettext/jed.js
--- old/vendor/assets/javascripts/gettext/jed.js 1970-01-01 01:00:00.000000000 +0100
+++ new/vendor/assets/javascripts/gettext/jed.js 2015-02-24 20:48:08.000000000 +0100
@@ -0,0 +1,1022 @@
+/**
+ * @preserve jed.js https://github.com/SlexAxton/Jed
+ */
+/*
+-----------
+A gettext compatible i18n library for modern JavaScript Applications
+
+by Alex Sexton - AlexSexton [at] gmail - @SlexAxton
+WTFPL license for use
+Dojo CLA for contributions
+
+Jed offers the entire applicable GNU gettext spec'd set of
+functions, but also offers some nicer wrappers around them.
+The api for gettext was written for a language with no function
+overloading, so Jed allows a little more of that.
+
+Many thanks to Joshua I. Miller - unrtst@cpan.org - who wrote
+gettext.js back in 2008. I was able to vet a lot of my ideas
+against his. I also made sure Jed passed against his tests
+in order to offer easy upgrades -- jsgettext.berlios.de
+*/
+(function (root, undef) {
+
+ // Set up some underscore-style functions, if you already have
+ // underscore, feel free to delete this section, and use it
+ // directly, however, the amount of functions used doesn't
+ // warrant having underscore as a full dependency.
+ // Underscore 1.3.0 was used to port and is licensed
+ // under the MIT License by Jeremy Ashkenas.
+ var ArrayProto = Array.prototype,
+ ObjProto = Object.prototype,
+ slice = ArrayProto.slice,
+ hasOwnProp = ObjProto.hasOwnProperty,
+ nativeForEach = ArrayProto.forEach,
+ breaker = {};
+
+ // We're not using the OOP style _ so we don't need the
+ // extra level of indirection. This still means that you
+ // sub out for real `_` though.
+ var _ = {
+ forEach : function( obj, iterator, context ) {
+ var i, l, key;
+ if ( obj === null ) {
+ return;
+ }
+
+ if ( nativeForEach && obj.forEach === nativeForEach ) {
+ obj.forEach( iterator, context );
+ }
+ else if ( obj.length === +obj.length ) {
+ for ( i = 0, l = obj.length; i < l; i++ ) {
+ if ( i in obj && iterator.call( context, obj[i], i, obj ) === breaker ) {
+ return;
+ }
+ }
+ }
+ else {
+ for ( key in obj) {
+ if ( hasOwnProp.call( obj, key ) ) {
+ if ( iterator.call (context, obj[key], key, obj ) === breaker ) {
+ return;
+ }
+ }
+ }
+ }
+ },
+ extend : function( obj ) {
+ this.forEach( slice.call( arguments, 1 ), function ( source ) {
+ for ( var prop in source ) {
+ obj[prop] = source[prop];
+ }
+ });
+ return obj;
+ }
+ };
+ // END Miniature underscore impl
+
+ // Jed is a constructor function
+ var Jed = function ( options ) {
+ // Some minimal defaults
+ this.defaults = {
+ "locale_data" : {
+ "messages" : {
+ "" : {
+ "domain" : "messages",
+ "lang" : "en",
+ "plural_forms" : "nplurals=2; plural=(n != 1);"
+ }
+ // There are no default keys, though
+ }
+ },
+ // The default domain if one is missing
+ "domain" : "messages",
+ // enable debug mode to log untranslated strings to the console
+ "debug" : false
+ };
+
+ // Mix in the sent options with the default options
+ this.options = _.extend( {}, this.defaults, options );
+ this.textdomain( this.options.domain );
+
+ if ( options.domain && ! this.options.locale_data[ this.options.domain ] ) {
+ throw new Error('Text domain set to non-existent domain: `' + options.domain + '`');
+ }
+ };
+
+ // The gettext spec sets this character as the default
+ // delimiter for context lookups.
+ // e.g.: context\u0004key
+ // If your translation company uses something different,
+ // just change this at any time and it will use that instead.
+ Jed.context_delimiter = String.fromCharCode( 4 );
+
+ function getPluralFormFunc ( plural_form_string ) {
+ return Jed.PF.compile( plural_form_string || "nplurals=2; plural=(n != 1);");
+ }
+
+ function Chain( key, i18n ){
+ this._key = key;
+ this._i18n = i18n;
+ }
+
+ // Create a chainable api for adding args prettily
+ _.extend( Chain.prototype, {
+ onDomain : function ( domain ) {
+ this._domain = domain;
+ return this;
+ },
+ withContext : function ( context ) {
+ this._context = context;
+ return this;
+ },
+ ifPlural : function ( num, pkey ) {
+ this._val = num;
+ this._pkey = pkey;
+ return this;
+ },
+ fetch : function ( sArr ) {
+ if ( {}.toString.call( sArr ) != '[object Array]' ) {
+ sArr = [].slice.call(arguments, 0);
+ }
+ return ( sArr && sArr.length ? Jed.sprintf : function(x){ return x; } )(
+ this._i18n.dcnpgettext(this._domain, this._context, this._key, this._pkey, this._val),
+ sArr
+ );
+ }
+ });
+
+ // Add functions to the Jed prototype.
+ // These will be the functions on the object that's returned
+ // from creating a `new Jed()`
+ // These seem redundant, but they gzip pretty well.
+ _.extend( Jed.prototype, {
+ // The sexier api start point
+ translate : function ( key ) {
+ return new Chain( key, this );
+ },
+
+ textdomain : function ( domain ) {
+ if ( ! domain ) {
+ return this._textdomain;
+ }
+ this._textdomain = domain;
+ },
+
+ gettext : function ( key ) {
+ return this.dcnpgettext.call( this, undef, undef, key );
+ },
+
+ dgettext : function ( domain, key ) {
+ return this.dcnpgettext.call( this, domain, undef, key );
+ },
+
+ dcgettext : function ( domain , key /*, category */ ) {
+ // Ignores the category anyways
+ return this.dcnpgettext.call( this, domain, undef, key );
+ },
+
+ ngettext : function ( skey, pkey, val ) {
+ return this.dcnpgettext.call( this, undef, undef, skey, pkey, val );
+ },
+
+ dngettext : function ( domain, skey, pkey, val ) {
+ return this.dcnpgettext.call( this, domain, undef, skey, pkey, val );
+ },
+
+ dcngettext : function ( domain, skey, pkey, val/*, category */) {
+ return this.dcnpgettext.call( this, domain, undef, skey, pkey, val );
+ },
+
+ pgettext : function ( context, key ) {
+ return this.dcnpgettext.call( this, undef, context, key );
+ },
+
+ dpgettext : function ( domain, context, key ) {
+ return this.dcnpgettext.call( this, domain, context, key );
+ },
+
+ dcpgettext : function ( domain, context, key/*, category */) {
+ return this.dcnpgettext.call( this, domain, context, key );
+ },
+
+ npgettext : function ( context, skey, pkey, val ) {
+ return this.dcnpgettext.call( this, undef, context, skey, pkey, val );
+ },
+
+ dnpgettext : function ( domain, context, skey, pkey, val ) {
+ return this.dcnpgettext.call( this, domain, context, skey, pkey, val );
+ },
+
+ // The most fully qualified gettext function. It has every option.
+ // Since it has every option, we can use it from every other method.
+ // This is the bread and butter.
+ // Technically there should be one more argument in this function for 'Category',
+ // but since we never use it, we might as well not waste the bytes to define it.
+ dcnpgettext : function ( domain, context, singular_key, plural_key, val ) {
+ // Set some defaults
+
+ plural_key = plural_key || singular_key;
+
+ // Use the global domain default if one
+ // isn't explicitly passed in
+ domain = domain || this._textdomain;
+
+ var fallback;
+
+ // Handle special cases
+
+ // No options found
+ if ( ! this.options ) {
+ // There's likely something wrong, but we'll return the correct key for english
+ // We do this by instantiating a brand new Jed instance with the default set
+ // for everything that could be broken.
+ fallback = new Jed();
+ return fallback.dcnpgettext.call( fallback, undefined, undefined, singular_key, plural_key, val );
+ }
+
+ // No translation data provided
+ if ( ! this.options.locale_data ) {
+ throw new Error('No locale data provided.');
+ }
+
+ if ( ! this.options.locale_data[ domain ] ) {
+ throw new Error('Domain `' + domain + '` was not found.');
+ }
+
+ if ( ! this.options.locale_data[ domain ][ "" ] ) {
+ throw new Error('No locale meta information provided.');
+ }
+
+ // Make sure we have a truthy key. Otherwise we might start looking
+ // into the empty string key, which is the options for the locale
+ // data.
+ if ( ! singular_key ) {
+ throw new Error('No translation key found.');
+ }
+
+ var key = context ? context + Jed.context_delimiter + singular_key : singular_key,
+ locale_data = this.options.locale_data,
+ dict = locale_data[ domain ],
+ defaultConf = (locale_data.messages || this.defaults.locale_data.messages)[""],
+ pluralForms = dict[""].plural_forms || dict[""]["Plural-Forms"] || dict[""]["plural-forms"] || defaultConf.plural_forms || defaultConf["Plural-Forms"] || defaultConf["plural-forms"],
+ val_list,
+ res;
+
+ var val_idx;
+ if (val === undefined) {
+ // No value passed in; assume singular key lookup.
+ val_idx = 0;
+
+ } else {
+ // Value has been passed in; use plural-forms calculations.
+
+ // Handle invalid numbers, but try casting strings for good measure
+ if ( typeof val != 'number' ) {
+ val = parseInt( val, 10 );
+
+ if ( isNaN( val ) ) {
+ throw new Error('The number that was passed in is not a number.');
+ }
+ }
+
+ val_idx = getPluralFormFunc(pluralForms)(val);
+ }
+
+ // Throw an error if a domain isn't found
+ if ( ! dict ) {
+ throw new Error('No domain named `' + domain + '` could be found.');
+ }
+
+ val_list = dict[ key ];
+
+ // If there is no match, then revert back to
+ // english style singular/plural with the keys passed in.
+ if ( ! val_list || val_idx > val_list.length ) {
+ if (this.options.missing_key_callback) {
+ this.options.missing_key_callback(key, domain);
+ }
+ res = [ singular_key, plural_key ];
+
+ // collect untranslated strings
+ if (this.options.debug===true) {
+ console.log(res[ getPluralFormFunc(pluralForms)( val ) ]);
+ }
+ return res[ getPluralFormFunc()( val ) ];
+ }
+
+ res = val_list[ val_idx ];
+
+ // This includes empty strings on purpose
+ if ( ! res ) {
+ res = [ singular_key, plural_key ];
+ return res[ getPluralFormFunc()( val ) ];
+ }
+ return res;
+ }
+ });
+
+
+ // We add in sprintf capabilities for post translation value interolation
+ // This is not internally used, so you can remove it if you have this
+ // available somewhere else, or want to use a different system.
+
+ // We _slightly_ modify the normal sprintf behavior to more gracefully handle
+ // undefined values.
+
+ /**
+ sprintf() for JavaScript 0.7-beta1
+ http://www.diveintojavascript.com/projects/javascript-sprintf
+
+ Copyright (c) Alexandru Marasteanu
participants (1)
-
root@hilbert.suse.de