Podporované typy souborů (Strings)

.XCSTRINGS - Apple Strings Catalog (Strings)

Obsah je strojově přeložen z angličtiny s použitím Phrase Language AI.

Přípony souborů 

.xcstrings

API rozšíření 

strings_catalog

Import 

Ano

Export 

Ano

Podpora plurálových tvarů 

Ano

Podpora pro popis 

Ano

Možnosti formátu

Tyto možnosti, které lze specifikovat při nahrávání a/nebo stahování souboru. V závislosti na metodě nahrávání/stahování (API, CLI, synchronizace repozitáře atd.) mohou být specifikovány v parametrech dotazu nahrát, Stáhnout nebo v konfiguračním souboru phrase.yml.

convert_placeholder

default_extraction_state

Apple Strings Catalog (.xcstrings) je lokalizační formát zavedený v Xcode 15. Zlepšuje způsob, jakým vývojáři spravují lokalizované řetězce, podporou strukturovaných formátů pro zpracování pluralizace, variací specifických pro zařízení a další. Tento formát se stává doporučeným přístupem pro správu lokalizací v aplikacích iOS a macOS.

Pole metadat komentář, extractionState a shouldTranslate jsou importována a exportována v požadovaném pořadí, aby byla zajištěna kompatibilita s Xcode.

Phrase také mapuje stavy překladu Xcode na nejbližší ekvivalenty Strings během importu a převádí je zpět na hodnoty kompatibilní s Xcode při exportu. Pokud neplatí žádné specifické mapování, používá se přeloženo jako výchozí hodnota exportu. Pokud je to nutné, použijte možnost Ignorovat stav překladu při importu pro přeskočení mapování stavu.

Vzor kódu

{
  "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"
}

Při používání Phrase CLI exporty souborů následují strukturu definovanou v konfiguračním souboru .phrase.yml. Aby byly exportovány více jazyků do jednoho souboru .XCSTRINGS během operací pull:

  • Specifikujte pouze jeden cílový soubor v konfiguračním souboru CLI.

  • Použijte parametr locale_ids pro výpis všech jazykových lokalit zahrnutých v exportu.

Příklad .phrase.yml konfigurace

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

Variace zařízení

Apple Strings Catalog podporuje variace zařízení, které umožňují různé překladové obsahy pro stejný klíč v závislosti na používaném zařízení Apple.

Pro zpracování variací zařízení v Phrase Strings jsou vytvořeny samostatné klíče pro každé zařízení pomocí oddělovače |==|. Při importu souborů .XCSTRINGS je typ zařízení přidán k základnímu názvu klíče pomocí tohoto oddělovače.

Příklad

Klíč pojmenovaný %lld Produkt(y) Objednáno pro zařízení applewatch je importován jako pluralitní klíč pojmenovaný %lld Produkt(y) Objednáno|==|device.applewatch do Phrase Strings.

Během exportu detekuje Phrase Strings variantu zařízení pomocí oddělovače a obnovuje jeho původní vnořenou strukturu pro lokalizační formát Apple.

{
  "sourceLanguage": "en",
  "strings": {
    "%lld Product(s) Ordered": {
      "comment": "Indikuje počet objednaných produktů, s variacemi specifickými pro zařízení",
      "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é"
                }
              }
            }
          }
        }
      }
    }
  }
}

Nahrazení řetězců

Apple Strings Catalog podporuje nahrazení řetězců, které poskytují flexibilní zástupné znaky pro dynamický obsah.

Pro zpracování nahrazení řetězců v Phrase Strings se vytvářejí oddělené klíče pomocí oddělovače |==|. Při importu souborů .XCSTRINGS se náhrada přidává k základnímu názvu klíče pomocí tohoto oddělovače.

Phrase Strings také podporuje vytváření náhradních řetězců přímo v projektu. Při ručním vytváření struktur náhrad musí být definován základní klíč a odpovídající klíč náhrady, aby se zajistilo, že během exportu bude vygenerován správný vnořený formát.

Náhrady vždy vyžadují specifický formát pojmenování klíče: keyName|==|substitution.[specifier].

Příklad: Importování struktur náhrad z existujících souborů .XCSTRINGS

Klíč pojmenovaný birdSightingAlert pro náhradu BIRDS je importován jako množný klíč pojmenovaný birdSightingAlert|==|substitution.BIRDS do Phrase Strings.

Během exportu detekuje Phrase Strings náhradu pomocí oddělovače a obnovuje její původní vnořenou strukturu pro lokalizační formát Apple.

"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"
                }
              }
            }
          }
        }
      }
    }
  }

Příklad: Vytváření náhradních řetězců od začátku

  • Základní klíč

    Základní klíč pojmenovaný keyName představuje řetězec formátu na nejvyšší úrovni, který obsahuje zástupný znak pro náhradu %#@format@.

    Při exportu je tento klíč zapsán jako primární stringUnit pro položku:

    "keyName": {
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "%#@format@"
          }
        }
      }
    }
  • Klíč náhrady

    Řetězec pro substituci je definován jako samostatný klíč pomocí formátu pojmenování substituce: keyName|==|substitution.li.

    Tento klíč obsahuje text substituce, obvykle s množnými variantami. Během exportu detekuje Phrase Strings substituci pomocí oddělovače |==|substitution. a obnovuje odpovídající vnořenou strukturu pod základním klíčem:

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

Možnosti formátu

Identifikátor 

convert_placeholder

Typ 

boolean

Nahrát 

Ne

Stáhnout 

Ano

Výchozí 

false

Popis 

Zástupný znak bude převeden tak, aby vyhovoval specifickým požadavkům formátu. Příklad: $s$@, %s%@

Identifikátor 

default_extraction_state

Typ 

řetěz|ec

Nahrát 

Ne

Stáhnout 

Ano

Výchozí 

null

Popis 

Definuje hodnotu extractionState, která je zapsána do klíčů v exportovaném souboru, když není na klíči již definována žádná stav extrakce. Pokud klíč již obsahuje extractionState, jeho hodnota je zachována během exportu.

Podporováno v:

  • UI stahování

  • API

  • CLI (přes .phrase.yml konfiguraci) a Repo Sync

Byl pro vás tento článek užitečný?

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.