diff --git a/src/strings.js b/src/strings.js
index 4d98c1e2..c2ae5ef7 100644
--- a/src/strings.js
+++ b/src/strings.js
@@ -37,12 +37,14 @@ $.extend( $, {
var props = prop.split('.'),
string = null,
args = arguments,
+ container = I18N,
i;
- for ( i = 0; i < props.length; i++ ) {
+ for ( i = 0; i < props.length-1; i++ ) {
// in case not a subproperty
- string = I18N[ props[ i ] ] || {};
+ container = container[ props[ i ] ] || {};
}
+ string = container[ props[ i ] ];
if ( typeof( string ) != "string" ) {
string = "";
@@ -65,7 +67,7 @@ $.extend( $, {
setString: function( prop, value ) {
var props = prop.split('.'),
- container = $.Strings,
+ container = I18N,
i;
for ( i = 0; i < props.length - 1; i++ ) {
diff --git a/test/strings.js b/test/strings.js
new file mode 100644
index 00000000..61a12d93
--- /dev/null
+++ b/test/strings.js
@@ -0,0 +1,29 @@
+(function() {
+
+ module("strings");
+ test("getSubString", function() {
+ equal(OpenSeadragon.getString("Errors.Dzi"),
+ "Hmm, this doesn't appear to be a valid Deep Zoom Image.",
+ "Read sub-string");
+ });
+
+ test("getInvalidString", function() {
+ equal(OpenSeadragon.getString("Greeting"), "",
+ "Handled unset string key");
+ equal(OpenSeadragon.getString("Errors"), "",
+ "Handled requesting parent key");
+ });
+
+ test("setString", function() {
+ OpenSeadragon.setString("Greeting", "Hello world");
+ equal(OpenSeadragon.getString("Greeting"), "Hello world",
+ "Set a string");
+ });
+
+ test("setSubString", function() {
+ OpenSeadragon.setString("CustomGreeting.Hello", "Hello world");
+ equal(OpenSeadragon.getString("CustomGreeting.Hello"), "Hello world",
+ "Set a sub-string");
+ });
+
+})();
diff --git a/test/test.html b/test/test.html
index 878547a8..fe83f52d 100644
--- a/test/test.html
+++ b/test/test.html
@@ -16,6 +16,7 @@
+