Unterstützte Dateitypen (Strings)

.XCSTRINGS - Apple Strings Catalog (Strings)

Inhalte werden von Phrase Language AI maschinell aus dem Englischen übersetzt.

Dateierweiterungen 

.xcstrings

API-Erweiterung 

strings_catalog

Importieren 

Ja

Exportieren 

Ja

Unterstützung für Pluralformen 

Ja

Unterstützung für Beschreibungen 

Ja

Format-Optionen

Diese Optionen können angegeben werden, wenn eine Datei hochgeladen und/oder heruntergeladen wird. Je nach Upload-/Download-Methode (API, CLI, Repo-Synchronisierung usw.) können sie in den Abfrageparametern Hochladen, Herunterladen oder in der phrase.yml Konfigurationsdatei angegeben werden.

convert_placeholder

default_extraction_state

Apple Strings Catalog (.xcstrings) ist ein Lokalisierungsformat, das in Xcode 15 eingeführt wurde. Es verbessert die Art und Weise, wie Entwickler lokalisierte Strings verwalten, indem es strukturierte Formate zur Handhabung von Pluralisierung, gerätespezifischen Variationen und mehr unterstützt. Dieses Format wird als empfohlener Ansatz zur Verwaltung von Lokalisierungen in iOS- und macOS-Anwendungen angesehen.

Die Metadatenfelder Kommentar, Extraktionsstatus und sollte übersetzen werden in der erforderlichen Reihenfolge importiert und exportiert, um die Kompatibilität mit Xcode sicherzustellen.

Phrase ordnet auch die Xcode-Übersetzungszustände während des Imports den nächstgelegenen Strings-Äquivalenten zu und konvertiert sie beim Export zurück in Xcode-kompatible Werte. Wenn keine spezifische Zuordnung zutrifft, wird übersetzt als Standardexportwert verwendet. Falls erforderlich, verwenden Sie die Option Übersetzungsstatus beim Import ignorieren, um die Statuszuordnung zu überspringen.

Codebeispiel

{
  "sourceLanguage": "en",
  "strings": {
    "Sync Warning": {
      "comment": "Sync function unavailable message",
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "Cloud Sync must be enabled to use this feature."
          }
        },
        "fr": {
          "stringUnit": {
            "state": "translated",
            "value": "La synchronisation cloud doit être activée pour utiliser cette fonction."
          }
        }
      }
    },
    "Chosen Collections": {
      "comment": "View title indicating selected photo collections",
      "localizations": {
        "fr": {
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld collection sélectionnée"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld collections sélectionnées"
                }
              }
            }
          }
        },
        "en": {
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld Collection Selected"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld Collections Selected"
                }
              }
            }
          }
        }
      }
    },
    "Settings Hub": {
      "localizations": {
        "es": {
          "stringUnit": {
            "state": "translated",
            "value": "Centro de configuración"
          }
        }
      }
    }
  },
  "version": "1.0"
}

Bei Verwendung der Phrase CLI folgen die Datei-Exporte der Struktur, die in der .phrase.yml Konfigurationsdatei definiert ist. Um sicherzustellen, dass mehrere Sprachen während Pull-Operationen in eine einzige .XCSTRINGS-Datei exportiert werden:

  • Geben Sie nur ein Dateiziel in der CLI-Konfigurationsdatei an.

  • Verwenden Sie den Parameter locale_ids, um alle Sprachlokalisierungen aufzulisten, die im Export enthalten sind.

Beispiel .phrase.yml Konfiguration

pull:
  targets:
    - file: ./i18n-test/Localizable.xcstrings
      params:
        locale_id: en # Main language for the download
        locale_ids: # Additional languages to include
          - de
          - es
          - fr 
        file_format: strings_catalog

Gerätevariationen

Apple Strings Catalog unterstützt Gerätevariationen, die unterschiedliche Übersetzungsinhalte für denselben Schlüssel je nach verwendetem Apple-Gerät ermöglichen.

Um Gerätevariationen in Phrase Strings zu handhaben, werden separate Schlüssel für jedes Gerät mit dem Trennzeichen |==| erstellt. Beim Importieren von .XCSTRINGS-Dateien wird der Gerätetyp dem Basis-Schlüsselname mit diesem Trennzeichen hinzugefügt.

Beispiel

Der Schlüssel mit dem Namen %lld Produkt(e) bestellt für das applewatch Gerät wird als pluraler Schlüssel mit dem Namen %lld Produkt(e) bestellt|==|device.applewatch in Phrase Strings importiert.

Beim Export erkennt Phrase Strings die Gerätevariante mithilfe des Trennzeichens und stellt die ursprüngliche verschachtelte Struktur für Apples Lokalisierungsformat wieder her.

{
  "sourceLanguage": "en",
  "strings": {
    "%lld Product(s) Ordered": {
      "comment": "Gibt die Anzahl der bestellten Produkte an, mit gerätespezifischen Variationen",
      "localizations": {
        "en": {
          "variations": {
            "device": {
              "applewatch": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Product ordered (Apple Watch)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Products ordered (Apple Watch)"
                      }
                    }
                  }
                }
              },
              "ipad": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Product ordered (iPad)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Products ordered (iPad)"
                      }
                    }
                  }
                }
              },
              "iphone": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Product ordered (iPhone)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Products ordered (iPhone)"
                      }
                    }
                  }
                }
              },
              "mac": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Product ordered (Mac)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "value": "%lld Products ordered (Mac)"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "fr": {
          "variations": {
            "plural": {
              "few": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld produit(s) commandé(s)"
                }
              },
              "many": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld produits commandés"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld produit commandé"
                }
              }
            }
          }
        }
      }
    }
  }
}

Zeichenfolgenersetzungen

Das Apple Strings Catalog unterstützt Zeichenfolgenersetzungen, die flexible Platzhalter für dynamische Inhalte bereitstellen.

Um Zeichenfolgenersetzungen in Phrase Strings zu verarbeiten, werden separate Schlüssel unter Verwendung des Trennzeichens |==| erstellt. Beim Importieren von .XCSTRINGS-Dateien wird die Ersetzung dem Basis-Schlüsselname mit diesem Trennzeichen hinzugefügt.

Phrase Strings unterstützt auch die Erstellung von Ersetzungszeichenfolgen direkt im Projekt. Wenn Ersetzungsstrukturen manuell erstellt werden, müssen ein Basis-Schlüssel und ein entsprechender Ersetzungsschlüssel definiert werden, um sicherzustellen, dass das korrekte verschachtelte Format während des Exports generiert wird.

Ersetzungen erfordern immer ein spezifisches Schlüsselbenennungsformat: keyName|==|substitution.[specifier].

Beispiel: Importieren von Ersetzungsstrukturen aus vorhandenen .XCSTRINGS-Dateien

Der Schlüssel mit dem Namen birdSightingAlert für die BIRDS Ersetzung wird als pluraler Schlüssel mit dem Namen birdSightingAlert|==|substitution.BIRDS in Phrase Strings importiert.

Beim Export erkennt Phrase Strings die Ersetzung mithilfe des Trennzeichens und stellt die ursprüngliche verschachtelte Struktur für Apples Lokalisierungsformat wieder her.

"birdSightingAlert": {
  "comment": "Alert message indicating the number of birds spotted",
  "localizations": {
    "en": {
      "stringUnit": {
        "state": "new",
        "value": "You spotted %#@BIRDS@!"
      },
      "substitutions": {
        "BIRDS": {
          "formatSpecifier": "BIRDS",
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "new",
                  "value": "a bird"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "new",
                  "value": "several birds"
                }
              },
              "zero": {
                "stringUnit": {
                  "state": "new",
                  "value": "no birds"
                }
              }
            }
          }
        }
      }
    }
  }

Beispiel: Erstellen von Ersetzungszeichenfolgen von Grund auf

  • Basis-Schlüssel

    Ein Basis-Schlüssel mit dem Namen keyName stellt die oberste Formatzeichenfolge dar, die den Ersetzungsplatzhalter %#@format@ enthält.

    Beim Export wird dieser Schlüssel als primäre stringUnit für den Eintrag geschrieben:

    "keyName": {
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "%#@format@"
          }
        }
      }
    }
  • Ersetzungsschlüssel

    Ein Ersatzzeichenfolge wird als separater Schlüssel unter Verwendung des Ersetzungsbenennungsformats definiert: keyName|==|substitution.li.

    Dieser Schlüssel enthält den Ersetzungstext, typischerweise mit Pluralvariationen. Während des Exports erkennt Phrase Strings die Ersetzung mit dem Trennzeichen |==|substitution. und stellt die entsprechende geschachtelte Struktur unter dem Basis-Schlüssel wieder her:

    {
      "sourceLanguage": "en",
      "strings": {
        "keyName": {
          "localizations": {
            "en": {
              "stringUnit": {
                "state": "translated",
                "value": "%#@format@"
              },
              "substitutions": {
                "li": {
                  "formatSpecifier": "li",
                  "variations": {
                    "plural": {
                      "one": {
                        "stringUnit": {
                          "state": "translated",
                          "value": "%@ Tag"
                        }
                      },
                      "other": {
                        "stringUnit": {
                          "state": "translated",
                          "value": "%@ Tage"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "version": "1.0"
    }

Format-Optionen

Identifikator 

convert_placeholder

Typ 

Boolean

Upload 

Nein

Download 

Ja

Standard 

false

Beschreibung 

Platzhalter werden in Übereinstimmung mit formatspezifischen Anforderungen umgewandelt. Beispiel: $s$@, %s%@

Identifikator 

default_extraction_state

Typ 

Zeichenfolge

Upload 

Nein

Download 

Ja

Standard 

null

Beschreibung 

Definiert den extractionState Wert, der in die Schlüssel der exportierten Datei geschrieben wird, wenn kein Extraktionsstatus bereits auf dem Schlüssel definiert ist. Wenn ein Schlüssel bereits einen extractionState enthält, wird sein Wert während des Exports beibehalten.

Unterstützt in:

  • UI-Downloads

  • API

  • CLI (über .phrase.yml Konfiguration) und Repo-Synchronisierung

War dieser Beitrag hilfreich?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.