Skip to main content
AI agent network visualization

Přeložte Xcode String Catalogs během několika sekund

Tvary množného čísla správně podle CLDR. Varianty pro zařízení zachovány. Stavy překladu sledovány. Vaše soubory .xcstrings přeložené, aniž byste opustili IDE.

Překlad String Catalog je zrádně složitý

String Catalogs v Xcode 15 nahradily .strings a .stringsdict jediným JSON souborem — ale složitost nezmizela. Tvary množného čísla vyžadují správné kategorie CLDR pro každý jazyk, varianty pro zařízení (iPhone vs iPad vs Mac) musí zůstat spárované se svými klíči a Xcode díky sledování stavů znamená, že jediné chybné pole zneplatní celý záznam.

Každý jazyk potřebuje jiné kategorie množného čísla CLDR — arabština potřebuje všech šest, japonština pouze 'other', ruština čtyři odlišné tvary

Varianty řetězců specifické pro zařízení (iPhone, iPad, Mac, Apple Watch) musí zůstat správně přiřazené k nadřazeným klíčům

Xcode sleduje stavy překladu (new, needs_review, translated, stale) — nesprávné hodnoty stavů způsobí, že Xcode překlady ignoruje nebo je chybně označí

Migrace z legacy .strings/.stringsdict na .xcstrings přináší rozdíly ve formátu, které obecné nástroje nezvládají

Zdroj (angličtina)
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"
                }
              }
            }
          }
        }
      }
    }
  }
}
Přeloženo (němčina)
Localizable.xcstrings (s de)
{
  "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"
                }
              }
            }
          }
        }
      }
    }
  }
}

Co i18n Agent zachovává

Tvary množného čísla

Pro každý cílový jazyk se vygenerují správné kategorie množného čísla CLDR — od jediné kategorie u japonštiny až po šest kategorií u arabštiny

Varianty pro zařízení

Varianty řetězců pro iPhone, iPad, Mac a Apple Watch zůstávají správně přiřazené k nadřazeným klíčům

Zohlednění stavů

Stavy překladu (new, needs_review, translated) se nastaví správně, aby lokalizační workflow v Xcode fungoval bez problémů

Kompatibilita formátu

Výstup je plně kompatibilní s editorem String Catalog v Xcode a čistě se integruje jak s novými, tak s migrovanými projekty

Funguje napříč vývojem pro Apple platformy

Katalogy řetězců v Xcode 15+
Lokalizace ve SwiftUI
UIKit / AppKit
Balíčky Swift

Jak to funguje

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.

Žádné ruční kopírování a vkládání. Žádná extrakce řetězců. Jen přeložené soubory.

Vyzkoušejte i18n Agent nyní

Sem přetáhněte svůj překladový soubor

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

nebo klikněte a vyberte soubor

Cílové jazyky

Bez registraceOkamžitý odhad

Nejčastější dotazy

Vývojář?

Nainstalujte nástroj CLI a přeložte svůj první soubor za 2 minuty.

Nainstalovat nástroj CLI

Enterprise tým?

Stále jste uvázaní ve smlouvě s TMS? Pojďme probrat migraci.