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) {
|
||||
if(!this.lang[locale]) this.lang[locale] = $H();
|
||||
this.lang[locale] = $H(this.lang[locale]).merge(dict);
|
||||
if(!this.lang[locale]) this.lang[locale] = {};
|
||||
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