Text mit ML Kit unter iOS �bersetzen

Sie k�nnen ML Kit zum �bersetzen von Text zwischen Sprachen verwenden. ML-Kit unterst�tzt derzeit die �bersetzung zwischen 59 Sprachen.

Hinweis

  1. Wenn Sie Ihrer App noch nicht Firebase hinzugef�gt haben, folgen Sie der im Startleitfaden.
  2. F�gen Sie die ML Kit-Bibliotheken in Ihre Podfile-Datei ein:
    pod 'Firebase/MLNLTranslate', '6.25.0'
    
    Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, �ffnen Sie unbedingt Ihren Xcode mithilfe der .xcworkspace zu erstellen.
  3. Importieren Sie Firebase in Ihre App:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

Einen Textstring �bersetzen

So �bersetzen Sie einen String zwischen zwei Sprachen:

  1. Erstellen Sie ein Translator-Objekt und konfigurieren Sie es mit der Quelle und dem Ziel. Sprachen:

    Swift

    // Create an English-German translator:
    let options = TranslatorOptions(sourceLanguage: .en, targetLanguage: .de)
    let englishGermanTranslator = NaturalLanguage.naturalLanguage().translator(options: options)
    

    Objective-C

    // Create an English-German translator:
    FIRTranslatorOptions *options =
        [[FIRTranslatorOptions alloc] initWithSourceLanguage:FIRTranslateLanguageEN
                                              targetLanguage:FIRTranslateLanguageDE];
    FIRTranslator *englishGermanTranslator =
        [[FIRNaturalLanguage naturalLanguage] translatorWithOptions:options];
    

    Wenn Sie die Sprache des Eingabetexts nicht kennen, k�nnen Sie die Sprache Identifizierungs-API zuerst. (Achten Sie jedoch darauf, Speichern Sie nicht zu viele Sprachmodelle gleichzeitig auf dem Ger�t.)

  2. Pr�fen Sie, ob das erforderliche �bersetzungsmodell auf das Ger�t heruntergeladen wurde. Rufen Sie translate(_:completion:) erst an, wenn Sie wissen, dass das Modell verf�gbar ist.

    Swift

    let conditions = ModelDownloadConditions(
        allowsCellularAccess: false,
        allowsBackgroundDownloading: true
    )
    englishGermanTranslator.downloadModelIfNeeded(with: conditions) { error in
        guard error == nil else { return }
    
        // Model downloaded successfully. Okay to start translating.
    }
    

    Objective-C

    FIRModelDownloadConditions *conditions =
        [[FIRModelDownloadConditions alloc] initWithAllowsCellularAccess:NO
                                             allowsBackgroundDownloading:YES];
    [englishGermanTranslator downloadModelIfNeededWithConditions:conditions
                                                      completion:^(NSError *_Nullable error) {
      if (error != nil) {
        return;
      }
      // Model downloaded successfully. Okay to start translating.
    }];
    

    Language Models sind etwa 30 MB gro�, laden Sie sie also nicht unn�tig herunter. Sie d�rfen sie nur �ber WLAN herunterladen, sofern der Nutzer nichts anderes festgelegt hat. Ich nicht ben�tigte Modelle l�schen. Weitere Informationen finden Sie unter �bersetzungsmodelle explizit verwalten.

  3. Nachdem Sie best�tigt haben, dass das Modell heruntergeladen wurde, �bergeben Sie einen Textstring in die Ausgangssprache in translate(_:completion:):

    Swift

    englishGermanTranslator.translate(text) { translatedText, error in
        guard error == nil, let translatedText = translatedText else { return }
    
        // Translation succeeded.
    }
    

    Objective-C

    [englishGermanTranslator translateText:text
                                completion:^(NSString *_Nullable translatedText,
                                             NSError *_Nullable error) {
      if (error != nil || translatedText == nil) {
        return;
      }
    
      // Translation succeeded.
    }];
    

    ML Kit �bersetzt den Text in die von Ihnen konfigurierte Zielsprache und �bergibt den �bersetzten Text an den Abschluss-Handler.

�bersetzungsmodelle explizit verwalten

Wenn Sie die Translation API wie oben beschrieben verwenden, L�dt bei Bedarf sprachspezifische �bersetzungsmodelle auf das Ger�t herunter. Ich die �bersetzungsmodelle, die auf der Seite mit der Translation Model Management API von ML Kit. Dabei kann es sich um n�tzlich, wenn Sie Modelle im Voraus herunterladen oder nicht ben�tigte Modelle l�schen m�chten. vom Ger�t aus.

So rufen Sie die auf dem Ger�t gespeicherten �bersetzungsmodelle ab:

Swift

let localModels = ModelManager.modelManager().downloadedTranslateModels

Objective-C

NSSet<FIRTranslateRemoteModel *> *localModels =
    [FIRModelManager modelManager].downloadedTranslateModels;

So l�schen Sie ein Modell:

Swift

// Delete the German model if it's on the device.
let deModel = TranslateRemoteModel.translateRemoteModel(language: .de)
ModelManager.modelManager().deleteDownloadedModel(deModel) { error in
    guard error == nil else { return }
    // Model deleted.
}

Objective-C

// Delete the German model if it's on the device.
FIRTranslateRemoteModel *deModel =
    [FIRTranslateRemoteModel translateRemoteModelWithLanguage:FIRTranslateLanguageDE];
[[FIRModelManager modelManager] deleteDownloadedModel:deModel
                                           completion:^(NSError * _Nullable error) {
                                               if (error != nil) {
                                                   return;
                                               }
                                               // Model deleted.
                                           }];

So laden Sie ein Modell herunter:

Swift

// Download the French model.
let frModel = TranslateRemoteModel.translateRemoteModel(language: .fr)

// Keep a reference to the download progress so you can check that the model
// is available before you use it.
progress = ModelManager.modelManager().download(
    frModel,
    conditions: ModelDownloadConditions(
        allowsCellularAccess: false,
        allowsBackgroundDownloading: true
    )
)

Wenn Sie den Downloadstatus mit NotificationCenter abrufen m�chten, registrieren Sie Beobachter f�r firebaseMLModelDownloadDidSucceed und firebaseMLModelDownloadDidFail. Achte darauf, eine schwache Referenz zu self zu verwenden. im Beobachterblock befinden, da Downloads einige Zeit dauern k�nnen Objekt kann bis zum Abschluss des Downloads freigegeben werden. Beispiel:

NotificationCenter.default.addObserver(
    forName: .firebaseMLModelDownloadDidSucceed,
    object: nil,
    queue: nil
) { [weak self] notification in
    guard let strongSelf = self,
        let userInfo = notification.userInfo,
        let model = userInfo[ModelDownloadUserInfoKey.remoteModel.rawValue]
            as? TranslateRemoteModel,
        model == frModel
        else { return }
    // The model was downloaded and is available on the device
}

NotificationCenter.default.addObserver(
    forName: .firebaseMLModelDownloadDidFail,
    object: nil,
    queue: nil
) { [weak self] notification in
    guard let strongSelf = self,
        let userInfo = notification.userInfo,
        let model = userInfo[ModelDownloadUserInfoKey.remoteModel.rawValue]
            as? TranslateRemoteModel
        else { return }
    let error = userInfo[ModelDownloadUserInfoKey.error.rawValue]
    // ...
}

Objective-C

// Download the French model.
FIRModelDownloadConditions *conditions =
    [[FIRModelDownloadConditions alloc] initWithAllowsCellularAccess:NO
                                         allowsBackgroundDownloading:YES];
FIRTranslateRemoteModel *frModel =
    [FIRTranslateRemoteModel translateRemoteModelWithLanguage:FIRTranslateLanguageFR];

// Keep a reference to the download progress so you can check that the model
// is available before you use it.
self.downloadProgress = [[FIRModelManager modelManager] downloadModel:frModel
                                                           conditions:conditions];

Registrieren Sie sich, um den Downloadstatus bei NSNotificationCenter abzurufen. Beobachter f�r FIRModelDownloadDidSucceedNotification und FIRModelDownloadDidFailNotification Verwenden Sie im Beobachterblock unbedingt einen schwachen Verweis auf self, da Downloads einige Zeit in Anspruch nehmen k�nnen und das urspr�ngliche Objekt bis zum Ende des Downloads freigegeben werden kann.

__block MyViewController *weakSelf = self;

[NSNotificationCenter.defaultCenter
 addObserverForName:FIRModelDownloadDidSucceedNotification
 object:nil
 queue:nil
 usingBlock:^(NSNotification * _Nonnull note) {
     if (weakSelf == nil | note.userInfo == nil) {
         return;
     }

     FIRTranslateRemoteModel *model = note.userInfo[FIRModelDownloadUserInfoKeyRemoteModel];
     if ([model isKindOfClass:[FIRTranslateRemoteModel class]]
         && model == frModel) {
         // The model was downloaded and is available on the device
     }
 }];

[NSNotificationCenter.defaultCenter
 addObserverForName:FIRModelDownloadDidFailNotification
 object:nil
 queue:nil
 usingBlock:^(NSNotification * _Nonnull note) {
     if (weakSelf == nil | note.userInfo == nil) {
         return;
     }

     NSError *error = note.userInfo[FIRModelDownloadUserInfoKeyError];
 }];