Skip to main content
AI agent network visualization

Käännä Xcode String Catalog -luetteloita sekunneissa

Monikkomuodot ovat oikein CLDR:n mukaan, laitemuunnelmat ja käännösten tilat säilyvät. .xcstrings-tiedostosi käännetään poistumatta IDE:stä.

String Catalog -luetteloiden kääntäminen on yllättävän monimutkaista

Xcode 15 String Catalog -luettelot korvasivat .strings- ja .stringsdict-tiedostot yhdellä JSON-tiedostolla, mutta monimutkaisuus säilyi. Monikkomuodot tarvitsevat oikeat CLDR-luokat kullekin kielelle, laitemuunnelmien (iPhone, iPad ja Mac) on pysyttävä omien avaintensa yhteydessä, ja yksi virheellinen kenttä mitätöi koko merkinnän Xcode:in tilaseurannassa.

Jokainen kieli tarvitsee eri CLDR-monikkoluokat — arabia kaikki kuusi, japani vain other-luokan ja venäjä neljä eri muotoa

Laitekohtaisten merkkijonomuunnelmien (iPhone, iPad, Mac ja Apple Watch) on pysyttävä oikeiden pääavaintensa yhteydessä

Xcode seuraa käännösten tiloja (new, needs_review, translated, stale) — väärät tila-arvot saavat Xcode:in ohittamaan käännökset tai merkitsemään ne virheellisesti

Siirtyminen vanhoista .strings- ja .stringsdict-tiedostoista .xcstrings-muotoon tuo mukanaan muotoeroja, joita yleiskäyttöiset työkalut eivät käsittele

Lähde (englanti)
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"
                }
              }
            }
          }
        }
      }
    }
  }
}
Käännetty (saksa)
Localizable.xcstrings (saksaksi)
{
  "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"
                }
              }
            }
          }
        }
      }
    }
  }
}

Mitä i18n Agent säilyttää

Monikkomuodot

Kullekin kohdekielelle luodaan oikeat CLDR-monikkoluokat — japanin yhdestä luokasta arabian kuuteen luokkaan

Laitemuunnelmat

iPhonen, iPadin, Macin ja Apple Watchin merkkijonomuunnelmat pysyvät oikeiden pääavaintensa yhteydessä

Tilatietoinen käsittely

Käännösten tilat (new, needs_review, translated) asetetaan oikein, jotta Xcode:in lokalisointityönkulku toimii moitteettomasti

Muotoyhteensopivuus

Tuloste on täysin yhteensopiva Xcode:in String Catalog -editorin kanssa ja integroituu siististi sekä uusiin että siirrettyihin projekteihin

Toimii kaikessa Apple-kehityksessä

Xcode 15+ String Catalog -luettelot
SwiftUI-lokalisointi
UIKit / AppKit
Swift-paketit

Näin se toimii

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.

Ei manuaalista kopiointia tai merkkijonojen poimintaa. Vain käännetyt tiedostot.

Kokeile i18n Agent:ia nyt

Pudota käännöstiedostosi tähän

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

tai valitse napsauttamalla

Kohdekielet

Rekisteröitymistä ei tarvitaVälitön arvio

Usein kysytyt kysymykset

Kehittäjä?

Asenna CLI-työkalu ja käännä ensimmäinen tiedostosi kahdessa minuutissa.

Asenna CLI-työkalu

Yritystiimi?

Oletko yhä jumissa TMS-sopimuksessa? Keskustellaan siirtymisestä.