Ajax html document I18n

Ajax html document I18n

本文关键字:I18n document html Ajax      更新时间:2024-04-20

我使用的代码是:

$.get(
    'filename.html',
    function(content)
    {
        $('#container').empty().append(content);
    }
);

加载一些外部文件并将内容放置到当前工作页中。我加载的外部文件是纯HTML格式的,我想问一下,是否有什么好的方法可以将加载的页面国际化。

在我当前的页面中,我有机会创建一个带有所有翻译键的javascript对象,如:

var i18n = {
    'doc1' : {
        'title' : 'This is a title'
    }
};

例如,外部文件看起来像

<h3>This is a title</h3>
.....

有没有办法把它改成类似的东西

<h3>{doc1.title}</h3>
.....

然后在加载之后替换doc1.title;

可能是这样的:

var i18n = {
    'doc1' : {
        'title' : 'This is a title'
    }
};
$.get(
    'filename.html',
    function(content)
    {
        for (var doc in i18n) {
            for (var key in i18n[doc]) {
                var val = i18n[doc][key];
                content = content.replace( '{' + doc + '.' + key + '}', val );
            }
        }
        $('#container').empty().append(content);
    }
);

小提琴:http://jsfiddle.net/Kirrr/eW7Nn/

您正在寻找的可能是这样的东西:

1.更新

JavaScript:

var i18n = { doc1: { title: 'Title', ... }, ... };
var doc_name = 'doc1';
$.get(doc_name + '.html', function(data) {
  for (var word in i18n[doc_name]) {
    data = data.replace(new RegExp('/' + word + '/', 'g'), i18n[doc_name][word]);
  }
  $('#container').html(data);
});

HTML:

<h3>{title}</h3>

2.

JavaScript:

var doc1 = { title: 'Title', ... };
$.get("doc1.php", doc1, function(data) {
  $('#container').html(data);
});

PHP:

<h3><?= $_GET['title'] ?></h3>

如果检索到的文档包含

<h3 id="localTitle"></h3>

你可以做

$.get(
    'filename.html',
    function(content)
    {
        $('#container').empty().append(content);
        $('#container #localTitle').html('This is a title');
    }
);