Types de fichiers pris en charge (Strings)

.XCSTRINGS - Catalogue de chaînes Apple (Chaînes)

Le contenu est traduit de l’anglais par Phrase Language AI.

Extensions de fichier 

.xcstrings

API Extension 

strings_catalog

Import 

Oui

Exporter 

Oui

Prise en charge des formes plurielles 

Oui

Prise en charge de la description 

Oui

Options de format

Ces options peuvent être spécifiées lors du téléchargement et/ou de l'importation d'un fichier. Selon la méthode de téléchargement/importation (API, CLI, synchronisation de dépôt, etc.), elles peuvent être spécifiées dans les paramètres de requête Charger, Télécharger ou dans le fichier de configuration phrase.yml.

convert_placeholder

default_extraction_state

Catalogue de chaînes Apple (.xcstrings) est un format de localisation introduit dans Xcode 15. Il améliore la façon dont les développeurs gèrent les chaînes localisées en prenant en charge des formats structurés pour gérer la pluralisation, les variations spécifiques aux appareils, et plus encore. Ce format devient l'approche recommandée pour gérer les localisations dans les applications iOS et macOS.

Les champs de métadonnées commentaire, état d'extraction et doit traduire sont importés et exportés dans l'ordre requis pour garantir la compatibilité avec Xcode.

Phrase associe également les états de traduction Xcode aux équivalents Strings les plus proches lors de l'importation et les convertit en valeurs compatibles avec Xcode lors de l'exportation. Si aucun mappage spécifique ne s'applique, traduit est utilisé comme valeur d'exportation par défaut. Si nécessaire, utilisez l'option Ignorer l'état de traduction à l'importation pour ignorer le mappage d'état.

Exemple de code

{
  "sourceLanguage": "en",
  "strings": {
    "Sync Warning": {
      "comment": "Message indiquant que la fonction de synchronisation est indisponible",
      "localisations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "valeur": "La synchronisation cloud doit être activée pour utiliser cette fonction."
          }
        },
        "fr": {
          "stringUnit": {
            "state": "translated",
            "value": "La synchronisation cloud doit être activée pour utiliser cette fonction."
          }
        }
      }
    },
    "Collections choisies": {
      "comment": "Titre de la vue indiquant les collections de photos sélectionnées",
      "localisations": {
        "fr": {
          "variations": {
            "plural": {
              "un": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld collection sélectionnée"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%ld collections sélectionnées"
                }
              }
            }
          }
        },
        "en": {
          "variations": {
            "plural": {
              "un": {
                "stringUnit": {
                  "state": "translated",
                  "valeur": "%ld Collection sélectionnée"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "valeur": "%ld Collections sélectionnées"
                }
              }
            }
          }
        }
      }
    },
    "Hub des paramètres": {
      "localisations": {
        "es": {
          "stringUnit": {
            "state": "translated",
            "value": "Centro de configuración"
          }
        }
      }
    }
  },
  "version": "1.0"
}

Lors de l'utilisation de la Phrase CLI, les exports de fichiers suivent la structure définie dans le fichier de configuration .phrase.yml. Pour garantir que plusieurs langues sont exportées dans un seul fichier .XCSTRINGS lors des opérations de pull :

  • Spécifiez uniquement une cible de fichier dans le fichier de configuration CLI.

  • Utilisez le paramètre locale_ids pour lister tous les paramètres linguistiques inclus dans l'exportation.

Exemple de configuration .phrase.yml

pull :
  cibles :
    - fichier : ./i18n-test/Localizable.xcstrings
      params :
        locale_id : en # Langue principale pour le téléchargement
        locale_ids : # Langues supplémentaires à inclure
          - de
          - es
          - fr 
        file_format : strings_catalog

Variations de dispositifs

Le catalogue de chaînes Apple prend en charge les variations de dispositifs, ce qui permet différents contenus de traduction pour la même clé en fonction de l'appareil Apple utilisé.

Pour gérer les variations de dispositifs dans les chaînes de phrases, des clés séparées sont créées pour chaque dispositif en utilisant le séparateur |==|. Lors de l'importation de fichiers .XCSTRINGS, le type de dispositif est ajouté au nom de la clé de base en utilisant ce séparateur.

Exemple

La clé nommée %lld Produit(s) Commandé(s) pour le dispositif applewatch est importée en tant que clé plurielle nommée %lld Produit(s) Commandé(s)|==|device.applewatch dans les chaînes de phrases.

Lors de l'exportation, les chaînes de phrases détectent la variante de dispositif en utilisant le séparateur et restaurent sa structure imbriquée d'origine pour le format de localisation d'Apple.

{
  "sourceLanguage": "en",
  "strings": {
    "%lld Produit(s) Commandé(s)": {
      "commentaire": "Indique le nombre de produits commandés, avec des variations spécifiques au dispositif",
      "localisations": {
        "en": {
          "variations": {
            "dispositif": {
              "applewatch": {
                "variations": {
                  "plural": {
                    "un": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produit commandé (Apple Watch)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produits commandés (Apple Watch)"
                      }
                    }
                  }
                }
              },
              "ipad": {
                "variations": {
                  "plural": {
                    "un": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produit commandé (iPad)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produits commandés (iPad)"
                      }
                    }
                  }
                }
              },
              "iphone": {
                "variations": {
                  "plural": {
                    "un": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produit commandé (iPhone)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produits commandés (iPhone)"
                      }
                    }
                  }
                }
              },
              "mac": {
                "variations": {
                  "plural": {
                    "un": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produit commandé (Mac)"
                      }
                    },
                    "other": {
                      "stringUnit": {
                        "state": "translated",
                        "valeur": "%lld Produits commandés (Mac)"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "fr": {
          "variations": {
            "plural": {
              "few": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld produit(s) commandé(s)"
                }
              },
              "many": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld produits commandés"
                }
              },
              "un": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld produit commandé"
                }
              }
            }
          }
        }
      }
    }
  }
}

Chaînes de substitutions

Le catalogue Apple Strings prend en charge les substitutions de chaînes qui fournissent des espaces réservés flexibles pour un contenu dynamique.

Pour gérer les substitutions de chaînes dans les chaînes Phrase, des clés séparées sont créées en utilisant le séparateur |==|. Lors de l'importation de fichiers .XCSTRINGS, la substitution est ajoutée au nom de la clé de base en utilisant ce séparateur.

Les chaînes Phrase prennent également en charge la création de chaînes de substitution directement dans le projet. Lorsque les structures de substitution sont créées manuellement, une clé de base et une clé de substitution correspondante doivent être définies pour garantir que le format imbriqué correct est généré lors de l'exportation.

Les substitutions nécessitent toujours un format de nommage de clé spécifique : nomDeClé|==|substitution.[spécificateur].

Exemple : Importation de structures de substitution à partir de fichiers .XCSTRINGS existants

La clé nommée birdSightingAlert pour la substitution BIRDS est importée en tant que clé plurielle nommée birdSightingAlert|==|substitution.BIRDS dans les chaînes Phrase.

Lors de l'exportation, les chaînes Phrase détectent la substitution en utilisant le séparateur et restaurent sa structure imbriquée d'origine pour le format de localisation d'Apple.

"birdSightingAlert": {
  "comment": "Message d'alerte indiquant le nombre d'oiseaux aperçus",
  "localisations": {
    "en": {
      "stringUnit": {
        "state": "new",
        "value": "Vous avez aperçu %#@BIRDS@!"
      },
      "substitutions": {
        "OISEAUX": {
          "formatSpecifier": "BIRDS",
          "variations": {
            "plural": {
              "un": {
                "stringUnit": {
                  "state": "new",
                  "value": "a bird"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "new",
                  "value": "plusieurs oiseaux"
                }
              },
              "zero": {
                "stringUnit": {
                  "state": "new",
                  "value": "aucun oiseau"
                }
              }
            }
          }
        }
      }
    }
  }

Exemple : Création de chaînes de substitution à partir de zéro

  • Clé de base

    Une clé de base nommée keyName représente la chaîne de format de niveau supérieur qui contient l'espace réservé de substitution %#@format@.

    Lors de l'exportation, cette clé est écrite comme l'unité de chaîne principale stringUnit pour l'entrée :

    "keyName": {
      "localisations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "%#@format@"
          }
        }
      }
    }
  • Clé de substitution

    Une chaîne de substitution est définie comme une clé séparée utilisant le format de nommage de substitution : keyName|==|substitution.li.

    Cette clé contient le texte de substitution, généralement avec des variations plurielles. Lors de l'exportation, Phrase Strings détecte la substitution en utilisant le séparateur |==|substitution. et restaure la structure imbriquée correspondante sous la clé de base :

    {
      "sourceLanguage": "en",
      "strings": {
        "keyName": {
          "localisations": {
            "en": {
              "stringUnit": {
                "state": "translated",
                "value": "%#@format@"
              },
              "substitutions": {
                "li": {
                  "formatSpecifier": "li",
                  "variations": {
                    "plural": {
                      "un": {
                        "stringUnit": {
                          "state": "translated",
                          "value": "%@ jour"
                        }
                      },
                      "other": {
                        "stringUnit": {
                          "state": "translated",
                          "value": "%@ jours"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "version": "1.0"
    }

Options de format

Identifiant 

convert_placeholder

Type 

booléen

Charger 

non

Télécharger 

Oui

Par défaut 

false

Description 

L'espace réservé sera converti pour répondre aux exigences spécifiques du format de correspondance. Exemple : $s$@, %s%@

Identifiant 

default_extraction_state

Type 

chaîne

Charger 

non

Télécharger 

Oui

Par défaut 

null

Description 

Définit la valeur extractionState écrite dans les clés du fichier exporté lorsque aucun état d'extraction n'est déjà défini sur la clé. Si une clé contient déjà un extractionState, sa valeur est préservée lors de l'exportation.

Pris en charge dans :

  • téléchargements UI

  • API

  • CLI (via la configuration .phrase.yml) et la synchronisation de dépôt

Cet article vous a-t-il été utile ?

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.