Om een verouderde vertaling te vinden die nog steeds als vertaald wordt weergegeven, volg je het gewijzigde brontekenreeksbericht naar het bijbehorende item in de String Catalog, bouw je de app opnieuw en vergelijk je de formulering. Een groen vinkje alleen lost een afwijking die je al hebt vastgesteld niet op.

Deze workflow is bedoeld voor iemand die een Mac-app met een bestaande .xcstrings-catalogus in Xcode onderhoudt. Het doel is vast te stellen welke vertalingen aandacht nodig hebben na een wijziging in de Engelse brontekst, bruikbare bestaande tekst te behouden en het gecorrigeerde bericht in de actieve app te controleren.

Wat moet er gebeuren wanneer een bronbericht verandert?

Apple documenteert dat een wijziging in een bronreeks de vertalingen ervan markeert voor controle. De catalogus onderscheidt niet-vertaalde tekenreeksen (New), tekenreeksen die aandacht nodig hebben (Needs Review) en vertaalde tekenreeksen met een groen vinkje. De afzonderlijke status Stale betekent dat Xcode een eerder vertaalde tekenreeks niet meer in de code kon vinden. String Catalogs ontdekken

Die terminologie is van belang bij het diagnosticeren van dit probleem. Een verouderde vertaling van een bericht dat je app nog gebruikt, vraagt om controle. Als je alleen zoekt naar de status Stale in de catalogus, kun je die over het hoofd zien.

De door Apple gedocumenteerde reactie op een bronwijziging geeft een verwacht resultaat, maar verklaart niet waarom een bepaald item de status ‘vertaald’ heeft behouden. Als dat gebeurt, onderzoek dan het verband tussen de gewijzigde bron en de catalogus voordat je het vinkje beschouwt als voldoende bewijs dat de formulering actueel is.

Zoek het exacte bericht op voordat je vertalingen controleert

Begin met één gewijzigd bericht. Noteer de vorige Engelse formulering, de huidige formulering, de opzoeksleutel als die apart is en de naam van de catalogus. Deze korte vergelijking is een aanbevolen hulpmiddel bij het diagnosticeren, geen Xcode-functie. Zo heb je iets concreets om te controleren wanneer meerdere items op elkaar lijken.

Stel bijvoorbeeld dat een desktopknop eerst Open item weergaf en nu Open selected items. De vraag is of elke vertaling nog steeds beschrijft dat de huidige selectie wordt geopend, ook als die uit meerdere items bestaat. Alleen een vertaling vinden van het woord Open geeft geen antwoord op die vraag.

Onderscheid de opzoeksleutel van de weergegeven tekst

Swift ondersteunt een expliciete statische opzoeksleutel met een afzonderlijke defaultValue. Die standaardwaarde is doorgaans tekst in de ontwikkeltaal en wordt gebruikt wanneer het opzoeken mislukt. Een comment biedt context voor de vertaler. Als er geen tabel is opgegeven, wordt Localizable gebruikt voor het opzoeken; als er geen bundel is opgegeven, wordt gezocht in de hoofdbundel van de app. De expliciete sleutelinitialisator voor tekenreeksen in Swift

Gebruik dit illustratieve berichtrecord om die onderdelen van elkaar te onderscheiden. Het gaat om synthetische waarden, niet om een catalogusbestand of uitvoerbaar programma.

Onderdeel Vóór de wijziging Na de wijziging
Opzoeksleutel selection.open selection.open
Engelse bronwaarde Open item Open selected items
Context voor de vertaler Button that opens one item Button that opens every item in the current selection
Catalogustabel Localizable Localizable

Hier blijft de identificatie hetzelfde, terwijl het bericht verandert. Bij een controle die alleen sleutelnamen vergelijkt, zou deze wijziging over het hoofd worden gezien. Vergelijk ook de bronwaarde en de context.

Sommige lokalisatieaanroepen in Swift gebruiken in plaats daarvan de tekst in de ontwikkeltaal als sleutel. Apple beschrijft String.LocalizationValue als ondersteuning voor dat model, inclusief interpolatie. In die opzet kan een wijziging in de formulering ook de opzoeksleutel veranderen. Controleer daarom zowel de oude als de nieuwe items en ga er niet van uit dat de vertaling aan één identificatie gekoppeld blijft. String.LocalizationValue

Bouw de app opnieuw en bekijk de bronlocatie

Kies in Xcode Product > Build en selecteer vervolgens de relevante catalogus in de Project-navigator. Apple documenteert dat builds catalogi bijwerken met wijzigingen in lokaliseerbare tekenreeksen in de code. Kies Editor > Assistant en selecteer de sleutel om de bronlocatie te bekijken. Tekst lokaliseren en variëren met een stringcatalogus

Vergelijk de brontekst in de catalogus met de beoogde wijziging. Als de catalogus nog steeds Open item bevat, achterhaal dan eerst waarom de nieuwe bron dat item nog niet heeft bereikt. Een doelvertaling vergelijken met de oude bron lost het oorspronkelijke probleem niet op.

Controleer de tabel en bundel van de lokalisatieaanroep, vooral als het project meerdere catalogi of modules bevat. Apple documenteert dat je een tabelnaam kunt doorgeven om een catalogus te selecteren en een passende bundel kunt opgeven voor tekenreeksen buiten de hoofdbundel van de app. Ook raadt Apple aan om lokaliseerbare API’s te gebruiken, zodat Xcode gebruikerstekst kan vinden. De tekst van je app voorbereiden op vertaling

Controleer en onderhoud de bron rechtstreeks voor een handmatig beheerd item: Apple stelt dat buildsynchronisatie handmatig beheerde tekenreeksen niet bijwerkt of verwijdert. Verwacht niet dat alleen opnieuw bouwen zo’n item vernieuwt. String Catalogs ontdekken

Vergelijk de betekenis met een beslismatrix voor bronwijzigingen

Zodra de huidige bron aanwezig is, selecteer je elke doeltaal en bekijk je het betreffende item. Xcode kan tekst filteren en op status sorteren, wat kan helpen om werk voor controle te vinden. Bekijk ook het specifieke gewijzigde bericht, zelfs als de status nog steeds ‘vertaald’ is. String Catalogs ontdekken

De volgende beslismatrix is gebaseerd op het vergelijken van de betekenis van berichten, niet op een automatische beoordeling van vertalingen. De Engelse labels zijn synthetische voorbeelden. Hiermee kun je bepalen wat je een vertaler moet vragen zonder ervan uit te gaan dat elke bronwijziging een andere doeltekst vereist.

Voorbeeld van bronwijziging Wat je moet onderzoeken Beslissing over controle
Open item → Open selected items De reikwijdte van de selectie en de betekenis in enkelvoud of meervoud Controleer of de vertaling de volledige handeling nog steeds beschrijft.
Show details → Hide details De richting van de handeling Controleer of de vertaalde handeling dienovereenkomstig verandert.
Items → Items: De interpunctie en plaatsing van het label Behoud de formulering alleen als die in de context passend blijft.
Open blijft Open, maar het gebruik verandert Of het label nu een andere handeling aanduidt Controleer de context, ook al is de brontekst identiek.

Vergelijk voor elk mogelijk aandachtspunt drie dingen: wat het oude bericht betekende, wat het huidige bericht betekent en wat de vertaling nu overbrengt. Een zichtbaar verschil in de bron maakt een bericht een kandidaat voor controle, maar bewijst op zichzelf niet dat de doeltekst moet veranderen.

Wijzigingen die alleen de context betreffen, verdienen een expliciete controle. Apple documenteert opmerkingen als richtlijnen voor vertalers, maar de opgehaalde documentatie stelt niet vast dat elke wijziging van een opmerking bestaande vertalingen automatisch ongeldig maakt. Als een ongewijzigd Engels label een andere betekenis krijgt, voeg het dan zelf toe aan de controlelijst. De tekst van je app voorbereiden op vertaling

Als het bericht een aantal of een apparaatspecifieke variant bevat, klap die varianten dan uit in plaats van alleen de bovenliggende rij te bekijken. Apple documenteert meervouds- en apparaatvarianten in catalogi. Voor het Engels kunnen de vormen 1 item en 2 items nodig zijn; controleer voor elke doeltaal de toepasselijke vormen en kopieer de Engelse grammatica niet klakkeloos. Tekst lokaliseren en variëren met een stringcatalogus

Rond de controle af zonder bruikbare vertalingen te verwijderen

Gebruik het contextmenu van het item om een twijfelachtige vertaling ter controle te markeren. Als de bestaande formulering is gecontroleerd en geschikt blijft, kies je Mark as Reviewed; werk anders de vertaling bij. Apple documenteert deze controleacties in de uitleg over String Catalogs. String Catalogs ontdekken

Houd de bestaande formulering beschikbaar terwijl je die met de gewijzigde bron vergelijkt. Door vertalingen te wissen, verlies je bruikbaar vergelijkingsmateriaal. Verwijder ook geen item alleen omdat de vertaling verouderd is: stel eerst vast of de app de sleutel nog gebruikt.

Voor het synthetische selectievoorbeeld bevat een bruikbare overdracht de sleutel selection.open, de wijziging van Open item naar Open selected items en de uitleg dat de knop elk geselecteerd item opent. Zo krijgt de vertaler een concrete handeling en reikwijdte om te beoordelen.

Er is een praktische beperking: de voor deze workflow opgehaalde documentatie van Apple beschrijft geen opdracht achteraf waarmee alle gemiste bronwijzigingen achter als vertaald gemarkeerde items kunnen worden gereconstrueerd. Als de eerdere formulering niet beschikbaar is, kun je de huidige bron met de huidige vertaling vergelijken, maar niet precies vaststellen wanneer de afwijking is ontstaan. Gebruik een eerdere projectversie of een opgeslagen kopie van de bron als de vergelijking van voor en na van belang is.

Controleer het gecorrigeerde bericht in de Mac-app

Test na de wijziging de daadwerkelijke interface. Kies Product > Scheme > Edit Scheme, selecteer Run, open Options en kies onder App Language de doeltaal. Sluit het venster, selecteer de Mac als uitvoerbestemming en start de app. Apple documenteert deze lokalisatietest via het schema. Lokalisaties testen wanneer je je app uitvoert

Ga terug naar het specifieke bedieningselement dat aanleiding gaf tot het onderzoek. Probeer voor Open selected items zowel één als meerdere items te selecteren. Controleer of het label de handeling in beide gevallen beschrijft en of de weergegeven tekst overeenkomt met het catalogusitem dat je hebt bewerkt. Een afwijking op dit punt is reden om de opzoeksleutel, tabel, bundel of toepasselijke variant opnieuw te controleren.

Sluit af met een duidelijke uitkomst voor elke betrokken taal: de bestaande formulering blijft geschikt, de vertaling is bijgewerkt of de controle is nog niet afgerond. Zo rond je de taak af aan de hand van het gewijzigde bericht en het gedrag ervan in de interface, met de catalogusstatus als onderbouwing van die beslissing.

Bronnen