Unterstützte Dateitypen (Strings)

.XCSTRINGS - Apple Strings Katalog (Strings)

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

Dateierweiterungen 

.xcstrings

API Extension 

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 Abfrageparametern Hochladen, Herunterladen oder in der phrase.yml Konfigurationsdatei angegeben werden.

convert_placeholder

default_extraction_state

Apple Strings Katalog (.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 zum empfohlenen Ansatz für die Verwaltung von Lokalisierungen in iOS- und macOS-Anwendungen.

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 Warnung": {
      "comment": "Sync-Funktion nicht verfügbar Nachricht",
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "Cloud-Synchronisierung muss aktiviert sein, um diese Funktion zu nutzen."
          }
        },
        "fr": {
          "stringUnit": {
            "state": "translated",
            "value": "Die Cloud-Synchronisierung muss aktiviert sein, um diese Funktion zu nutzen."
          }
        }
      }
    },
    "Ausgewählte Sammlungen": {
      "comment": "Ansichtstitel, der ausgewählte Fotosammlungen anzeigt",
      "localizations": {
        "fr": {
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld Sammlung ausgewählt"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld Sammlungen ausgewählt"
                }
              }
            }
          }
        },
        "en": {
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld Sammlung ausgewählt"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld Sammlungen ausgewählt"
                }
              }
            }
          }
        }
      }
    },
    "Einstellungen Hub": {
      "localizations": {
        "es": {
          "stringUnit": {
            "state": "translated",
            "value": "Centro de configuración"
          }
        }
      }
    }
  },
  "version": "1.0"
}

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

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

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

Beispiel .phrase.yml Konfiguration

pull:
  targets:
    - file: ./i18n-test/Localizable.xcstrings
      params:
        locale_id: en # Hauptsprache für den Download
        locale_ids: # Zusätzliche Sprachen, die einbezogen werden sollen
          - de
          - es
          - fr 
        file_format: strings_catalog

Gerätevariationen

Das 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.

Während des Exports 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 Produkt(e) bestellt": {
      "kommentieren": "Gibt die Anzahl der bestellten Produkte an, mit gerätespezifischen Variationen",
      "localizations": {
        "en": {
          "variations": {
            "device": {
              "applewatch": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkt bestellt (Apple Watch)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkte bestellt (Apple Watch)"
                      }
                    }
                  }
                }
              },
              "ipad": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkt bestellt (iPad)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkte bestellt (iPad)"
                      }
                    }
                  }
                }
              },
              "iphone": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkt bestellt (iPhone)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkte bestellt (iPhone)"
                      }
                    }
                  }
                }
              },
              "mac": {
                "variations": {
                  "plural": {
                    "one": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkt bestellt (Mac)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "wert": "%lld Produkte bestellt (Mac)"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "fr": {
          "variations": {
            "plural": {
              "few": {
                "stringUnit": {
                  "state": "translated",
                  "wert": "%lld produit(s) commandé(s)"
                }
              },
              "many": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Produkte bestellt"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Produkt bestellt"
                }
              }
            }
          }
        }
      }
    }
  }
}

String-Ersatz

Das Apple Strings Catalog unterstützt String-Ersatz, die flexible Platzhalter für dynamische Inhalte bieten.

Um String-Ersatz in Phrase Strings zu handhaben, werden separate Schlüssel mit dem Trennzeichen |==| erstellt. Beim Importieren von .XCSTRINGS-Dateien wird der Ersatz zum Basis-Schlüsselname mit diesem Trennzeichen hinzugefügt.

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

Ersatz erfordert immer ein spezifisches Schlüsselbenennungsformat: keyName|==|substitution.[specifier].

Beispiel: Importieren von Ersatzstrukturen aus bestehenden .XCSTRINGS-Dateien

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

Beim Export erkennt Phrase Strings den Ersatz mit dem Trennzeichen und stellt seine ursprüngliche verschachtelte Struktur für Apples Lokalisierungsformat wieder her.

"birdSightingAlert": {
  "comment": "Warnmeldung, die die Anzahl der gesichteten Vögel angibt",
  "localizations": {
    "en": {
      "stringUnit": {
        "state": "new",
        "value": "Sie haben %#@BIRDS@ gesichtet!"
      },
      "substitutions": {
        "BIRDS": {
          "formatSpecifier": "BIRDS",
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "new",
                  "value": "ein Vogel"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "new",
                  "value": "mehrere Vögel"
                }
              },
              "zero": {
                "stringUnit": {
                  "state": "new",
                  "value": "keine Vögel"
                }
              }
            }
          }
        }
      }
    }
  }

Beispiel: Erstellen von Ersatz-Strings von Grund auf

  • Basis-Schlüssel

    Ein Basis-Schlüssel namens keyName stellt die oberste Formatzeichenfolge dar, die den Platzhalter %#@format@ enthält.

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

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

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

    Dieser Schlüssel enthält den Ersatztext, typischerweise mit pluralen Variationen. Beim Export erkennt Phrase Strings den Ersatz mithilfe des |==|substitution. Trennzeichens und stellt die entsprechende geschachtelte Struktur unter dem Basisschlü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

Hochladen 

Nein

Herunterladen 

Ja

Standard 

false

Beschreibung 

Der Platzhalter wird in Übereinstimmung mit den spezifischen Anforderungen des Formats konvertiert. Beispiel: $s$@, %s%@

Identifikator 

default_extraction_state

Typ 

Zeichenfolge

Hochladen 

Nein

Herunterladen 

Ja

Standard 

null

Beschreibung 

Definiert den extractionState Wert, der in die Keys der exportierten Datei geschrieben wird, wenn kein Extraktionsstatus bereits auf dem Key definiert ist. Wenn ein Key bereits einen extractionState enthält, bleibt dessen Wert während des Exports erhalten.

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.