mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUGFIX Fixed missing $H() reference in i18n.js (#2989)
ENHANCEMENT Added unit tests for i18n.js git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@64878 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
1c435dfaee
commit
07bca16af6
@ -70,9 +70,28 @@ ss.i18n = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add entities to a dictionary. If a dictionary doesn't
|
||||||
|
* exist for this locale, its automatically created.
|
||||||
|
* Existing entities are overwritten.
|
||||||
|
*
|
||||||
|
* @param string locale
|
||||||
|
* @param Object dict
|
||||||
|
*/
|
||||||
addDictionary: function(locale, dict) {
|
addDictionary: function(locale, dict) {
|
||||||
if(!this.lang[locale]) this.lang[locale] = $H();
|
if(!this.lang[locale]) this.lang[locale] = {};
|
||||||
this.lang[locale] = $H(this.lang[locale]).merge(dict);
|
for(entity in dict) {
|
||||||
|
this.lang[locale][entity] = dict[entity];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get dictionary for a specific locale.
|
||||||
|
*
|
||||||
|
* @param string locale
|
||||||
|
*/
|
||||||
|
getDictionary: function(locale) {
|
||||||
|
return this.lang[locale];
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
67
javascript/tests/i18nTest.html
Normal file
67
javascript/tests/i18nTest.html
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="http://code.jquery.com/jquery-latest.js"></script>
|
||||||
|
<script src="../../javascript/i18n.js"></script>
|
||||||
|
<link rel="stylesheet" href="http://dev.jquery.com/view/trunk/qunit/testsuite.css" type="text/css" media="screen" />
|
||||||
|
|
||||||
|
<!-- Needed for testing purposes -->
|
||||||
|
<meta http-equiv="Content-Language" content="de">
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
test("test dictionary setting", function() {
|
||||||
|
ss.i18n.addDictionary('en_US', {'entity1': "Entity One"});
|
||||||
|
same(
|
||||||
|
ss.i18n.getDictionary('en_US'),
|
||||||
|
{'entity1': "Entity One"},
|
||||||
|
'New dictionary can be set'
|
||||||
|
);
|
||||||
|
ss.i18n.addDictionary('en_US', {'entity2': "Entity Two"});
|
||||||
|
same(
|
||||||
|
ss.i18n.getDictionary('en_US'),
|
||||||
|
{'entity1': "Entity One", 'entity2': "Entity Two"},
|
||||||
|
'Entites can be added to an existing dictionary'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
test("test entity translation", function() {
|
||||||
|
ss.i18n.addDictionary('en_US', {'entity1': "Entity One",'untranslated': "Untranslated"});
|
||||||
|
ss.i18n.addDictionary('de_DE', {'entity1': "Entity Eins"});
|
||||||
|
ss.i18n.setLocale('de_DE');
|
||||||
|
equals(
|
||||||
|
ss.i18n._t('entity1'),
|
||||||
|
'Entity Eins',
|
||||||
|
'Entities can be translated through _t()'
|
||||||
|
);
|
||||||
|
equals(
|
||||||
|
ss.i18n._t('untranslated'),
|
||||||
|
'Untranslated',
|
||||||
|
'Untranslated entities fall back to default locale'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
test("test locale detection", function() {
|
||||||
|
ss.i18n.setLocale('en_US');
|
||||||
|
// set in <meta> header
|
||||||
|
equals(
|
||||||
|
ss.i18n.detectLocale(),
|
||||||
|
'de_DE',
|
||||||
|
'Locale can be detected through <meta> tags'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="http://jqueryjs.googlecode.com/svn/trunk/qunit/testrunner.js"></script>
|
||||||
|
<h1>i18nTest</h1>
|
||||||
|
<h2 id="banner"></h2>
|
||||||
|
<h2 id="userAgent"></h2>
|
||||||
|
|
||||||
|
<ol id="tests"></ol>
|
||||||
|
|
||||||
|
<div id="main"></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user