|
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 |
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 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_idspro 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ý
keyNamepř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í
stringUnitpro 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: |
|
Identifikátor |
default_extraction_state |
|
Typ |
řetěz|ec |
|
Nahrát |
Ne |
|
Stáhnout |
Ano |
|
Výchozí |
null |
|
Popis |
Definuje hodnotu Podporováno v:
|