瀏覽代碼

Allow for a partial dictionary in `language`

This closes https://github.com/select2/select2/issues/3202.
Kevin Brown 10 年之前
父節點
當前提交
00a78bdb1e

+ 8 - 1
dist/js/select2.full.js

@@ -4471,7 +4471,14 @@ S2.define('select2/defaults',[
 
       options.translations = languages;
     } else {
-      options.translations = new Translation(options.language);
+      var baseTranslation = Translation.loadPath(
+        this.defaults.amdLanguageBase + 'en'
+      );
+      var customTranslation = new Translation(options.language);
+
+      customTranslation.extend(baseTranslation);
+
+      options.translations = customTranslation;
     }
 
     return options;

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.full.min.js


+ 8 - 1
dist/js/select2.js

@@ -4471,7 +4471,14 @@ S2.define('select2/defaults',[
 
       options.translations = languages;
     } else {
-      options.translations = new Translation(options.language);
+      var baseTranslation = Translation.loadPath(
+        this.defaults.amdLanguageBase + 'en'
+      );
+      var customTranslation = new Translation(options.language);
+
+      customTranslation.extend(baseTranslation);
+
+      options.translations = customTranslation;
     }
 
     return options;

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.min.js


+ 8 - 1
src/js/select2/defaults.js

@@ -257,7 +257,14 @@ define([
 
       options.translations = languages;
     } else {
-      options.translations = new Translation(options.language);
+      var baseTranslation = Translation.loadPath(
+        this.defaults.amdLanguageBase + 'en'
+      );
+      var customTranslation = new Translation(options.language);
+
+      customTranslation.extend(baseTranslation);
+
+      options.translations = customTranslation;
     }
 
     return options;

+ 28 - 0
tests/options/translation-tests.js

@@ -0,0 +1,28 @@
+module('Options - Translations');
+
+var $ = require('jquery');
+var Options = require('select2/options');
+
+test('partial dictionaries can be passed', function (assert) {
+  var options = new Options({
+    language: {
+      searching: function () {
+        return 'Something';
+      }
+    }
+  });
+
+  var translations = options.get('translations');
+
+  assert.equal(
+    translations.get('searching')(),
+    'Something',
+    'The partial dictionary still overrides translations'
+  );
+
+  assert.equal(
+    translations.get('noResults')(),
+    'No results found',
+    'You can still get English translations for keys not passed in'
+  );
+});

+ 1 - 0
tests/unit.html

@@ -71,6 +71,7 @@
 
     <script src="options/data-tests.js" type="text/javascript"></script>
     <script src="options/deprecated-tests.js" type="text/javascript"></script>
+    <script src="options/translation-tests.js" type="text/javascript"></script>
     <script src="options/width-tests.js" type="text/javascript"></script>
 
     <script src="selection/allowClear-tests.js" type="text/javascript"></script>

Some files were not shown because too many files changed in this diff