【问题标题】:Translation with javascript用javascript翻译
【发布时间】:2015-01-22 07:05:46
【问题描述】:

我有一个 angulerjs / grunt / gettext / node.js 应用程序。我已经生成了 pot 文件,但是如何让我的程序自动翻译?我看到您可以使用 pootle、zanata 等上传它们,但没有找到足够的在线帮助。提前谢谢你

【问题讨论】:

    标签: javascript angularjs node.js gruntjs gettext


    【解决方案1】:

    我不认识 Pootle 或 Zanata。但是,一旦您拥有 .json 格式的翻译文件,我会告诉您一种基于用户代理自动翻译它的方法。

    您可以像这样使用 Angular 的 Lang 服务: http://jsfiddle.net/e5nhttcf/

    module.factory('Lang',['$q', '$http', function($q){
        var lang = {};
    
        lang.literals = {};
        lang.current = navigator.language;
        lang.getLiterals = function(){
            var deferred = $q.defer();
            $http.get(location.origin + "/getlang/"+lang.current).success(function(data, status, headers, config){
                if(data){
                    lang.literals = data;
                    deferred.resolve();
                }           
            });
    
            return deferred.promise;
        };
    
        return lang;
    
    }
    }]); 
    

    首先,在初始化应用程序时调用 getLiterals。

    然后,您只需将工厂注入控制器并将文字分配给局部变量。然后在 html 中,您可以引用本地化文字:

    <div> {{literals.greetings}} </div>
    

    注意:我没有测试代码,仅供参考

    【讨论】:

    • 谢谢,但我不明白这些词是如何翻译的
    • 该应用程序不翻译字符串,只获取一种语言的字符串或其他语言的字符串。想象一下这种情况: 在应用程序中: lang.greetings -(欢迎用户的字符串) 在服务器中: lang/en.json lang/es.json en.json: { "greetings": "Hello user!" } es.json: { "问候": "你好 usuario!"因此,当应用程序初始化时,此 Lang 服务会获取用户的语言字符串。这样,您在应用程序中编写 {{lang.greetings}} 的位置会看到已翻译的字符串。如果你还是不明白我可以试着做一个小提琴
    • 是的,我知道该怎么做,但我的问题是如何自动翻译这些字符串,然后更新 json 语言文件?
    猜你喜欢
    • 2013-07-03
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多