Skip to main content
AI agent network visualization

Dịch Xcode String Catalog chỉ trong vài giây

Dạng số nhiều chính xác theo CLDR. Bảo toàn biến thể thiết bị. Theo dõi trạng thái bản dịch. Dịch tệp .xcstrings ngay trong IDE của bạn.

Dịch String Catalog phức tạp hơn bạn tưởng

String Catalog của Xcode 15 thay thế .strings và .stringsdict bằng một tệp JSON duy nhất — nhưng độ phức tạp vẫn còn nguyên. Dạng số nhiều cần đúng danh mục CLDR cho từng ngôn ngữ, biến thể thiết bị (iPhone, iPad hoặc Mac) phải luôn đi cùng khóa tương ứng và chỉ một trường sai trong cơ chế theo dõi trạng thái của Xcode cũng làm toàn bộ mục mất hiệu lực.

Mỗi ngôn ngữ cần các danh mục số nhiều CLDR khác nhau — tiếng Ả Rập cần đủ sáu danh mục, tiếng Nhật chỉ cần 'other' và tiếng Nga cần bốn dạng riêng biệt

Biến thể chuỗi dành riêng cho từng thiết bị (iPhone, iPad, Mac, Apple Watch) phải luôn liên kết chính xác với khóa cha

Xcode theo dõi trạng thái bản dịch (new, needs_review, translated, stale) — giá trị trạng thái sai khiến Xcode bỏ qua hoặc gắn cờ sai cho bản dịch

Quá trình chuyển từ .strings/.stringsdict cũ sang .xcstrings tạo ra những khác biệt định dạng mà công cụ thông thường không xử lý được

Nguồn (tiếng Anh)
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"
                }
              }
            }
          }
        }
      }
    }
  }
}
Bản dịch (tiếng Đức)
Localizable.xcstrings (có 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"
                }
              }
            }
          }
        }
      }
    }
  }
}

Những gì i18n Agent bảo toàn

Dạng số nhiều

Tạo đúng danh mục số nhiều CLDR cho từng ngôn ngữ đích — từ một danh mục cho tiếng Nhật đến sáu danh mục cho tiếng Ả Rập

Biến thể thiết bị

Biến thể chuỗi trên iPhone, iPad, Mac và Apple Watch luôn liên kết chính xác với khóa cha

Nhận biết trạng thái

Đặt chính xác trạng thái bản dịch (new, needs_review, translated) để quy trình bản địa hóa của Xcode hoạt động bình thường

Khả năng tương thích định dạng

Đầu ra hoàn toàn tương thích với trình chỉnh sửa String Catalog của Xcode và tích hợp liền mạch với cả dự án mới lẫn dự án đã chuyển đổi

Hoạt động trên toàn hệ sinh thái phát triển Apple

String Catalog của Xcode 15+
Bản địa hóa SwiftUI
UIKit / AppKit
Gói Swift

Cách hoạt động

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.

Không cần sao chép và dán thủ công. Không cần trích xuất chuỗi. Chỉ nhận tệp đã dịch.

Dùng thử i18n Agent ngay

Thả tệp bản dịch của bạn vào đây

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

hoặc nhấp để duyệt

Ngôn ngữ đích

Không cần đăng kýBáo giá tức thì

Câu hỏi thường gặp

Bạn là nhà phát triển?

Cài đặt công cụ CLI và dịch tệp đầu tiên trong 2 phút.

Cài đặt công cụ CLI

Đội ngũ doanh nghiệp?

Bạn vẫn mắc kẹt với hợp đồng TMS? Hãy trao đổi với chúng tôi về kế hoạch chuyển đổi.