Fixed IE bug, you must use html:msg for the msg elements that jquery.localize uses...
[lhc/web/wiklou.git] / resources / jquery / jquery.localize.js
1 /**
2 * Simple Placeholder-based Localization
3 *
4 * Call on a selection of HTML which contains <msg key="message-key" /> elements or elements with
5 * title-msg="message-key" or alt-msg="message-key" attributes. <msg /> elements will be replaced
6 * with localized text, elements with title-msg and alt-msg attributes will receive localized title
7 * and alt attributes.
8 *
9 * Note that "msg" elements must have html namespacing such as "<html:msg />" to be compatible with
10 * Internet Explorer.
11 *
12 * Example:
13 * <p class="somethingCool">
14 * <html:msg key="my-message" />
15 * <img src="something.jpg" title-msg="my-title-message" alt-msg="my-alt-message" />
16 * </p>
17 *
18 * Localizes to...
19 * <p class="somethingCool">
20 * My Message
21 * <img src="something.jpg" title="My Title Message" alt="My Alt Message" />
22 * </p>
23 */
24 /**
25 * Localizes a DOM selection by replacing <msg /> elements with localized text and adding
26 * localized title and alt attributes to elements with title-msg and alt-msg attributes
27 * respectively.
28 *
29 * @param Object: options Map of options
30 * * prefix: Message prefix to use when localizing elements and attributes
31 */
32
33 $.fn.localize = function( options ) {
34 options = $.extend( { 'prefix': '' }, options );
35 return $(this)
36 .find( 'msg,html\\:msg' )
37 .each( function() {
38 $(this)
39 .text( mediaWiki.msg( options.prefix + $(this).attr( 'key' ) ) )
40 .replaceWith( $(this).html() );
41 } )
42 .end()
43 .find( '[title-msg]' )
44 .each( function() {
45 $(this)
46 .attr( 'title', mw.msg( options.prefix + $(this).attr( 'title-msg' ) ) )
47 .removeAttr( 'title-msg' );
48 } )
49 .end()
50 .find( '[alt-msg]' )
51 .each( function() {
52 $(this)
53 .attr( 'alt', mw.msg( options.prefix + $(this).attr( 'alt-msg' ) ) )
54 .removeAttr( 'alt-msg' );
55 } )
56 .end();
57 };
58
59 // Let IE know about the msg tag before it's used...
60 document.createElement( 'msg' );