0

このプラグインを見つけて、PhoneGap 2.1 で動作させようとしました。以下のように更新しました。プラグイン参照を Cordova.plist に入れ、ローカライズ可能な文字列を作成しました。

このためNSLog(jsString);、コードは適切なローカライズされた文字列をコンソールに出力します

[6766:c07] <null>("Hello");

しかし、JSファイルで動作させることはできません。エラーは発生しませんが、機能しません。を削除してもアラート ボックスは表示されませんresult

 app.Localizer.get('HelloKey',

                      function(result) {
                                   alert("We got a setting: " + result);
                                   });

私の変更:

localizable.js
**************

function localizable() {
}

localizable.prototype.get = function(name, success) 
{

    Cordova.exec("localizable.get", name, success);

};

Cordova.addConstructor(function()
{
    if(!window.plugins)
    {
        window.plugins = {};
    }
    window.plugins.localizable = new localizable();
});

-

localizable.h
*************

#import <Cordova/CDVPlugin.h>
#import <Foundation/Foundation.h>



@interface localizable : CDVPlugin {}
-   (void) get:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
@end

-

localizable.m
*************

#import "localizable.h"


@implementation localizable
- (void)get:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
{
    NSUInteger argc = [arguments count];
    NSString* jsString;

    if(argc == 2)
    {
        NSString *key = [arguments objectAtIndex:0];
        NSString *successCallback = [arguments objectAtIndex:1];

        NSString *returnVar = NSLocalizedString(key, nil);

        jsString = [NSString stringWithFormat:@"%@(\"%@\");",successCallback,returnVar];

        NSLog(jsString);

        [self writeJavascript:jsString]; //Write back to JS
    }   

}
@end
4

1 に答える 1

0

古い phonegap 構文を使用しています。そこに問題があるとは言いませんが。しかし、私は次のことを行いましたが、うまくいきました。以下でこれを試すことができるかもしれません。これは基本的にあなたのものと同じコードですが、構文が異なります。

JavaScript

window.getString = function(str) {
    cordova.exec(
                 function(ans){gotString(ans);},
                 function(err){},"Tools","getString",[str]
                );
}

function gotString(ans) {
    navigator.notification.alert(ans);
}

function onDeviceReady() {
    window.getString("invalid_msg");
}

Tools.h

#import<Foundation/Foundation.h>
#import<Cordova/CDV.h>

@interface Tools: CDVPlugin

-(void) getString:(CDVInvokedUrlCommand*) command;

Tools.m

#import "Tools.h"
@implementation Tools

-(void) getString:(CDVInvokedUrlCommand*) command {
    NSString *string = [command.arguments objectAtIndex:0];
    CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:NSLocalizedString(string,nil)];
    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];   
}

@end

Localizable.strings (en)

"invalid_msg" = "It is not correct"

Localizable.strings (de)

"invalid_msg" = "Das ist falsch"
于 2013-02-15T03:20:11.193 に答える