Набросал небольшой плагин который лепит языковые переменные к элементам в DOM.
;(function($, window, document, undefined){
$.fn.procLang = function(options){
options = $.extend({}, $.fn.procLang.defaultOptions, options);
$.each(options.lang_object, function(k, obj){
if (obj.type != 'undefined') {
if (obj.type == 'value') {
$(obj.selector).val(obj.text);
} else if (obj.type == 'html') {
$(obj.selector).html(obj.text);
} else if (obj.type == 'attr') {
$(obj.selector).prop(obj.text);
} else if (obj.type == 'document') {
$(document).prop('title', obj.text);
} else {
$(obj.selector).text(obj.text);
}
} else {
$(obj.selector).text(obj.text);
}
});
return this;
};
$.fn.procLang.defaultOptions = {
lang_object: {} // Required
}
})(jQuery, window, document);
Прост до безобразия. И есть массив json вида
var lang = {
settingspage: {
texts: [
{selector: "document", type: "document", text: "Настройки"},
{selector: ".settings_global", type: "text", text: "Настройки"},
{selector: ".subscribers", type: "text", text: "Участники"},
{selector: ".conferences", type: "text", text: "Конференции"},
{selector: ".presets", type: "text", text: "Пресеты"},
{selector: ".save", text: "Сохранить"},
{selector: ".cancel", text: "Отмена"},
{selector: ".separator_logging", text: "Настройки логирования событий"},
{selector: ".separator_server", text: "Настройки сервера"},
{selector: ".separator_conferences", text: "Список всех конференций"}
]
}
}
Проблема возникает в IE7 при проверке на undefined. IE говорит что нет такой проперти как
type у
obj. И сообщает что оно почему-то у него
NULL.
Что это за косяк такой?
PS! Просто лепить type для каждого элемента накладно, и не всегда нужно.