Om de vertalingen van een Mac-app heen en terug te laten gaan, exporteer je een Xcode Localization Catalog, behoud je de meervoudsstructuur en argumentkoppelingen, en importeer en test je vervolgens het geretourneerde pakket. In deze handleiding wordt met een synthetisch selectielabel precies getoond wat je moet aanleveren en controleren.

Deze taak is bedoeld voor iemand die op een Mac in Xcode vertaalbestanden voorbereidt: stuur één bericht dat afhankelijk is van aantallen ter vertaling en haal het terug met behoud van het gedrag. Het voorbeeldlabel is Selected 3 tiles in 2 groups. Beide aantallen kunnen onafhankelijk van elkaar veranderen, dus het aan te leveren bestand moet meer behouden dan alleen de leesbare formulering.

Leg de berichtspecificatie vast voordat je exporteert

Beschouw de berichtspecificatie als een kleine beschrijving van welke vermelding de app opzoekt, welke runtimewaarden de app aanlevert en welke waarden de grammaticale variatie bepalen. Apple documenteert dat String.LocalizationValue lokalisatievriendelijke tekenreeksen met interpolatie ondersteunt, waaronder waarden die tijdens runtime worden aangeleverd. De documentatie beschrijft ook hoe je een statische sleutel en een aparte standaardwaarde gebruikt als de identificatie moet afwijken van de zichtbare brontekst. String.LocalizationValue

Noteer voor dit uitgewerkte voorbeeld de volgende specificatie bij het vertaalverzoek. Dit zijn illustratieve vereisten voor het synthetische label, geen bestandsindeling van Apple.

Onderdeel van de specificatie Vereiste voor dit voorbeeld
Doel van het bericht De huidige selectie samenvatten
Engelse brontekst Selected 3 tiles in 2 groups. waarbij beide getallen tijdens runtime worden aangeleverd
Argument 1 Aantal tegels; bepaalt de vorm van tile
Argument 2 Aantal groepen; bepaalt de vorm van group
Numerieke weergave Behoud het type en de opmaakspecificatie die Xcode voor elk argument vastlegt
Vrijheid bij vertalen De zin mag anders worden opgebouwd, zolang de betekenis van elk argument behouden blijft
Vereist gedrag Elk zelfstandig naamwoord komt overeen met het eigen aantal

Noteer ook de werkelijke catalogus, tabel en sleutel uit het project. Verzin tijdens het vertalen geen vervangende sleutel. In de voorbereidingsgids van Apple staat dat lokaliseerbare API’s tijdens het bouwen catalogi vullen en dat de parameter table of tableName de catalogus selecteert. De gids ondersteunt ook opmerkingen die de context van de tekenreeks toelichten. De tekst van je app voorbereiden op vertaling

Een bruikbare synthetische opmerking is: Selection summary. Argument 1 is the number of selected tiles. Argument 2 is the number of groups containing those tiles. Both counts vary independently. Keep each count attached to its corresponding noun. Zo krijgt de vertaler genoeg informatie om twee argumenten te onderscheiden, ook als ze hetzelfde numerieke type hebben.

Bereid onafhankelijke meervoudsvarianten in de catalogus voor

Begin met het bericht in de lokaliseerbare broncode van de app en bouw vervolgens het project. Klik in de editor voor de stringcatalogus met de Control-toets ingedrukt op de betreffende sleutel en kies Vary by Plural. Apple documenteert dat Xcode de opmaakspecificatie van de interpolatie bepaalt, de meervoudsvormen van de taal toevoegt en de variantvelden aanvankelijk met de bestaande waarde invult. Die vooraf ingevulde waarden moeten nog wel worden bewerkt. Tekst lokaliseren en variëren met een stringcatalogus

Voor de Engelse brontekst zijn de beoogde weergaven onder andere Selected 1 tile in 1 group., Selected 3 tiles in 1 group. en Selected 1 tile in 2 groups. Met één keuze die alleen op het aantal tegels is gebaseerd, kun je niet elke combinatie correct weergeven.

De demonstratie van Apple voor String Catalogs laat zien hoe je meerdere argumenten via substituties kunt variëren. Elke substitutie bevat meervoudsgevallen en in het infovenster staat de argumentpositie en C-stijl-opmaakspecificatie. Tijdens runtime voegt het systeem de geselecteerde substituties samen met het omringende bericht. Ontdek String Catalogs

Gebruik dat mechanisme voor de twee onafhankelijke aantallen. Houd woorden die met een aantal moeten overeenkomen binnen de bijbehorende variatie, in plaats van een vast meervoudig zelfstandig naamwoord in de omringende zin te laten staan. Geef de substituties waar de editor dit toestaat betekenisvolle namen en controleer vervolgens hun koppelingen: de substitutie voor tegels moet nog steeds argument 1 gebruiken en die voor groepen argument 2.

Vereis niet dat elke doeltaalvertaling dezelfde verzameling vertakkingen heeft als het Engels. Apple documenteert dat Xcode taalspecifieke meervoudsvarianten toevoegt. Variatie toevoegen aan de brontaalversie werkt ook door naar vertalingen; variatie toevoegen aan alleen een andere taalversie heeft alleen effect op die taalversie. Controleer vóór export de daadwerkelijke vertakkingen voor de doeltaal. Tekst lokaliseren en variëren met een stringcatalogus

Behoud de identiteit van argumenten wanneer de formulering verandert

De positie van een tijdelijke aanduiding in de zin en het argumentnummer hebben verschillende functies. Een vertaler kan het aantal groepen vóór het aantal tegels willen zetten zonder de volgorde te veranderen waarin de app die waarden aanlevert.

In de referentie voor formaatspecificaties documenteert Apple positionele notatie met n$. %1$lld verwijst bijvoorbeeld naar argument 1 met een long long-gehele-getalconversie, terwijl %2$lld met die conversie naar argument 2 verwijst. %d duidt een andere weergave van een geheel getal aan; het is geen kortere schrijfwijze van %lld. De referentie is gearchiveerde documentatie. Gebruik deze daarom voor de vastgelegde opmaakregels naast de huidige catalogusworkflow. String Format Specifiers

Neem het illustratieve formaatfragment Groups: %2$lld; tiles: %1$lld. Als argument 1 gelijk is aan 3 en argument 2 aan 2, is de bedoelde uitvoer Groups: 2; tiles: 3. Dit fragment laat alleen de argumentvolgorde zien; het implementeert geen grammaticale meervoudsselectie en mag de substituties van de catalogus niet vervangen.

Controleer tijdelijke aanduidingen op betekenis, index en type. Alleen nagaan of er nog twee procenttekens staan, zou niet aan het licht brengen dat een aantal is verwisseld. Alleen de typen controleren zou de verwisseling ook niet detecteren, omdat beide waarden gehele getallen zijn. Omgekeerd zou het wijzigen van de argumentvolgorde in de app om één vertaling te volgen de specificatie veranderen voor elke andere vertaling die deze vermelding gebruikt.

Vraag de vertaler voor de overdracht de geëxporteerde argumentkoppelingen en opmaaktypen te behouden en de formulering aan te passen. Een structurele wijziging van een substitutie moet expliciet aan de specificatie worden getoetst. Een andere woordvolgorde kan volkomen passend zijn.

Exporteer een pakket dat de vertaler kan terugsturen

Schakel vóór het exporteren de buildinstelling Use Compiler to Extract Swift Strings van het project in, zodat lokaliseerbare Swift-tekenreeksen worden opgenomen. Selecteer het project in de projectnavigator, kies Product > Export Localizations, selecteer de vereiste talen en bestemming en exporteer. Apple documenteert deze stappen en het resulterende .xcloc-pakket. Lokalisaties exporteren

De twee catalogusextensies hebben verschillende functies. Het .xcstrings-bestand van het project bevat de String Catalog. Het geëxporteerde .xcloc-pakket is bedoeld voor overdracht aan de vertaler; de map Localized Contents bevat XLIFF en de map Notes kan ondersteunende tekst bevatten. Stuur het pakket samen met de specificatie op, in plaats van het bericht terug te brengen tot een lijst met twee kolommen vol zichtbare zinnen. Lokalisaties exporteren

Controleer of de vertaaltool variaties van String Catalogs in XLIFF ondersteunt. Apple legt uit dat variatie-identificaties die van catalogi zijn afgeleid, de tekenreekssleutel en variatieconfiguratie coderen, en documenteert de instelling Localization Prefers String Catalogs voor die exportweergave. Deze structuren moeten tijdens de retourreis behouden blijven. Ontdek String Catalogs

Gebruik deze praktische checklist voor de aanlevering. Dit is een aanbeveling voor de workflow, gebaseerd op de gedocumenteerde pakketstructuur en de specificatie van het voorbeeld.

  • Stuur het vertaalde .xcloc-pakket terug met de relevante bronnen intact.
  • Behoud berichtidentificaties en variatiepaden, tenzij een bedoelde structurele wijziging is vastgelegd.
  • Lever doelteksten aan voor de verplichte meervoudsvertakkingen van de doeltaal.
  • Behoud de argumentidentiteit, numerieke typen en substitutiekoppelingen.
  • Vermeld eventuele bronwijzigingen sinds de export, zodat die vóór het importeren kunnen worden verrekend.

Als de tool van de vertaler gevarieerde vermeldingen niet kan behouden, gebruik dan Xcode om de geëxporteerde lokalisatie te bewerken of vertalingen in de catalogus van het project in te voeren. Apple documenteert hoe je XLIFF-doelen en String Catalogs in Xcode bewerkt; volgende exports bevatten wijzigingen in de catalogus. Bij alleen uitwisseling van platte tekst moet iemand de variatiestructuur opnieuw samenstellen. XLIFF- en stringcatalogusbestanden bewerken

Importeer het resultaat en controleer de daadwerkelijke verschillen

Houd de oorspronkelijke export beschikbaar om te vergelijken. Wanneer het vertaalde pakket terugkomt, selecteer je het project en kies je Product > Import Localizations. Selecteer de map met de Xcode Localization Catalog. Controleer in de importinterface waarschuwingen en fouten via Issues View en bekijk de wijzigingen via File View voordat je het importeren voltooit. Apple vermeldt dat de vergelijkingseditor links de geïmporteerde versie toont en rechts de huidige projectversie. Lokalisaties importeren

Voor tekenreeksen die afkomstig zijn uit een catalogus documenteert Apple dat vertalingen terug in de juiste String Catalog worden geïmporteerd. Open na het importeren de vermelding voor het selectiesamenvattingsbericht opnieuw en controleer beide substituties, hun argumentkoppelingen en de vertakkingen voor de doeltaal. Ontdek String Catalogs

Gebruik een gerichte diagnosevolgorde als er iets niet klopt. Ontbreekt een vermelding, vergelijk dan de tabel en sleutel met de oorspronkelijke export. Ontbreken meervoudsvarianten, vergelijk dan de geretourneerde variatiestructuur. Verschijnen aantallen bij de verkeerde zelfstandige naamwoorden, vergelijk dan de argumentkoppelingen. Leest slechts één combinatie verkeerd, controleer dan de tekst van die vertakking voordat je de appcode wijzigt. Deze volgorde volgt de afhankelijkheden van het voorbeeld; hiermee wordt niet beweerd dat Xcode elke schending van de specificatie automatisch detecteert.

Test ongelijke aantallen om verwisselde argumenten zichtbaar te maken

Een geslaagde import bevestigt dat Xcode het bestand heeft geaccepteerd. Het gedrag van het voorbeeld moet echter nog worden gecontroleerd. Gebruik testgegevens van de app of een ontwikkelfixture om de volgende combinaties weer te geven. Deze verwachte zinnen illustreren de Engelse bronspecificatie; de formulering en vertakkingsselectie voor de doeltaal moeten de doeltaalversie volgen.

Aantal tegels Aantal groepen Verwachte uitvoer Engelse brontekst Wat hiermee aan het licht kan komen
1 1 Selected 1 tile in 1 group. Beide enkelvoudsvormen
3 1 Selected 3 tiles in 1 group. Onafhankelijke variatie van tegels
1 2 Selected 1 tile in 2 groups. Onafhankelijke variatie van groepen
3 2 Selected 3 tiles in 2 groups. Ongelijke waarden die verwisselde argumenten zichtbaar maken

Voeg een controle met nul toe als de app een lege selectie kan weergeven. Kies ook waarden die elke meervoudscategorie testen die de betreffende doeltaal vereist. De vier bovenstaande rijen dekken de Engelse combinaties van enkelvoud en meervoud, maar niet alle mogelijke vertakkingen in de doeltaal.

Je kunt de Mac-app in een doeltaal uitvoeren door Product > Scheme > Edit Scheme te kiezen, Run te selecteren en Options te openen. Stel App Language in en, indien nodig, ook App Region. Sluit de editor, selecteer de uitvoerbestemming voor de Mac en voer de app uit. Apple documenteert deze testworkflow met schema’s. Lokalisaties testen tijdens het uitvoeren van je app

Lees het weergegeven bericht en controleer of het goed in de desktopinterface past. Als de aantallen bij de juiste zelfstandige naamwoorden blijven, elke vereiste vertakking correct werkt en de geretourneerde structuur overeenkomt met de beoogde specificatie, heeft de vertaling heen en terug het gedrag behouden dat dit label nodig heeft. Bewaar de specificatie bij het aangeleverde bestand, zodat je de volgende wijziging in de formulering aan dezelfde expliciete vereisten kunt toetsen.

Bronnen