Skip to main content
AI agent network visualization

Tõlgi Xcode String Catalog'i katalooge sekunditega

Mitmusevormid vastavad CLDR-ile, seadmevariandid säilivad ja tõlkeolekuid jälgitakse. Sinu .xcstrings-failid tõlgitakse IDE-st lahkumata.

String Catalog'i kataloogide tõlkimine on petlikult keerukas

Xcode 15 String Catalog'i kataloogid asendasid .strings- ja .stringsdict-failid ühe JSON-failiga, kuid keerukus ei kadunud. Mitmusevormid vajavad iga keele jaoks õigeid CLDR-kategooriaid, seadmevariandid (iPhone, iPad ja Mac) peavad jääma oma võtmetega seotuks ning üks vale väli muudab Xcode'i olekujälgimises kogu kirje kehtetuks.

Iga keel vajab erinevaid CLDR-i mitmusekategooriaid — araabia keel kõiki kuut, jaapani keel ainult other-kategooriat ja vene keel nelja eri vormi

Seadmepõhised stringivariandid (iPhone, iPad, Mac ja Apple Watch) peavad jääma õigete põhivõtmetega seotuks

Xcode jälgib tõlgete olekuid (new, needs_review, translated, stale) — valed olekuväärtused panevad Xcode'i tõlkeid eirama või valesti märgistama

Vanadelt .strings- ja .stringsdict-failidelt .xcstrings-vormingule üleminekul tekivad vorminguerinevused, millega üldotstarbelised tööriistad toime ei tule

Lähtekeel (inglise)
Localizable.xcstrings
{
  "sourceLanguage": "en",
  "version": "1.0",
  "strings": {
    "welcome_title": {
      "extractionState": "manual",
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "Welcome to the App"
          }
        }
      }
    },
    "item_count": {
      "localizations": {
        "en": {
          "variations": {
            "plural": {
              "zero": {
                "stringUnit": {
                  "state": "translated",
                  "value": "No items"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld item"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld items"
                }
              }
            }
          }
        }
      }
    },
    "device_greeting": {
      "localizations": {
        "en": {
          "variations": {
            "device": {
              "iphone": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tap to continue"
                }
              },
              "ipad": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tap or click to continue"
                }
              },
              "mac": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Click to continue"
                }
              }
            }
          }
        }
      }
    }
  }
}
Tõlgitud (saksa)
Localizable.xcstrings (saksa keelega)
{
  "sourceLanguage": "en",
  "version": "1.0",
  "strings": {
    "welcome_title": {
      "extractionState": "manual",
      "localizations": {
        "de": {
          "stringUnit": {
            "state": "translated",
            "value": "Willkommen in der App"
          }
        }
      }
    },
    "item_count": {
      "localizations": {
        "de": {
          "variations": {
            "plural": {
              "zero": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Keine Elemente"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Element"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Elemente"
                }
              }
            }
          }
        }
      }
    },
    "device_greeting": {
      "localizations": {
        "de": {
          "variations": {
            "device": {
              "iphone": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tippen zum Fortfahren"
                }
              },
              "ipad": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tippen oder klicken zum Fortfahren"
                }
              },
              "mac": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Klicken zum Fortfahren"
                }
              }
            }
          }
        }
      }
    }
  }
}

Mida i18n Agent säilitab

Mitmusevormid

Iga sihtkeele jaoks luuakse õiged CLDR-i mitmusekategooriad — jaapani keele ühest kategooriast araabia keele kuue kategooriani

Seadmevariandid

iPhone'i, iPadi, Maci ja Apple Watchi stringivariandid jäävad õigete põhivõtmetega seotuks

Olekuteadlik käsitlus

Tõlgete olekud (new, needs_review, translated) määratakse õigesti, et Xcode'i lokaliseerimise töövoog toimiks korralikult

Vormingu ühilduvus

Väljund ühildub täielikult Xcode'i String Catalog'i redaktoriga ning lõimub sujuvalt nii uute kui ka migreeritud projektidega

Toimib kogu Apple'i arenduskeskkonnas

Xcode 15+ String Catalog'i kataloogid
SwiftUI lokaliseerimine
UIKit / AppKit
Swift'i paketid

Kuidas see töötab

How i18n Agent works: Install, Translate, Done
1
2
3
terminal
$translate_filesrc/messages/en.json
 --target["de", "ja", "es"]
Done.3 languages, 142 keys translated.

Käsitsi kopeerimist ega stringide eraldamist pole. Ainult tõlgitud failid.

Proovi i18n Agent'i kohe

Kukuta tõlkefail siia

JSON, YAML, PO, XML, CSV, Markdown, Properties

või klõpsa faili valimiseks

Sihtkeeled

Registreerumine pole vajalikKohene hinnang

Korduma kippuvad küsimused

Arendaja?

Paigalda CLI-tööriist ja tõlgi oma esimene fail kahe minutiga.

Paigalda CLI-tööriist

Ettevõtte meeskond?

Kas oled endiselt TMS-i lepingus kinni? Räägime üleminekust.