通过Modernizr加载JavaScript语言包

时间:2013-11-26 08:20:03

标签: javascript localization internationalization modernizr yepnope

我遇到了为JavaScript库加载语言包的问题,​​我不确定最佳方法是什么。这就是我需要做的事情:

  1. 加载库文件(JavaScript和可能的CSS)
  2. 检测页面的语言(lang标记的<html>属性已设置)
  3. 加载适当的语言包。对于某些图书馆,英语不需要语言包。
  4. 在加载语言包后初始化插件(如果不需要语言包,则立即初始化)。
  5. 我正在尝试使用Modernizr并提出这个解决方案,但它似乎相当混乱:

    'use strict';
    Modernizr.load({
        load: ['jquery.countdown.min.js', 'jquery.countdown.css'],
        complete: function() {
            switch(document.documentElement.lang) {
                case 'fr-CA':
                    Modernizr.load({
                        load: 'jquery.countdown-fr.js',
                        callback: function() {
                            initCountdown();
                        }
                    });
                    break;
                case 'zh-CN':
                    Modernizr.load({
                        load: 'jquery.countdown-zh-CN.js',
                        callback: function() {
                            initCountdown();
                        }
                    });
                    break;
                default:
                    initCountdown();
                    break;
            }
        }
    });
    

    我尝试过的其他事情是使用yepnope.js中的test来测试document.documentElement.lang === 'fr-CA'等等,但我不确定如何编写多个测试加载一些东西然后在其中一个案例结束后执行回调函数。此代码似乎适用于需要语言包(除英语之外的任何内容)的情况:

    Modernizr.load({
        load: ['jquery.countdown.min.js', 'jquery.countdown.css'],
        complete: function() {
            Modernizr.load([
                {
                    test: document.documentElement.lang === 'fr-CA',
                    yep: 'jquery.countdown-fr.js',
                    callback: function() {
                        initCountdown();
                    }
                },
                {
                    test: document.documentElement.lang === 'zh-CN',
                    yep: 'jquery.countdown-zh-CN.js',
                    callback: function() {
                        initCountdown();
                    }
                }
            ]);
        }
    });
    

    如果它只是两种语言,那么我可以轻松地测试一种语言并将其加载到yepnope,但理想情况下我希望支持两种以上的语言。

    想点什么?

    我在此会注意到我已经查看了这个问题:Execute callback after modernizr/yepnope has loaded all files

0 个答案:

没有答案