Skip to main content
AI agent network visualization

Dịch tệp Flutter ARB chỉ trong vài giây

Giữ nguyên siêu dữ liệu. Bảo toàn phần giữ chỗ. Dạng số nhiều chính xác theo CLDR. Dịch tệp ARB mà không làm lỗi flutter gen-l10n.

Dịch ARB có thể làm lỗi bản dựng Flutter

Tệp ARB trông giống JSON nhưng không phải JSON. Tệp chứa các mục siêu dữ liệu có tiền tố @, định nghĩa phần giữ chỗ kèm chú thích kiểu và dạng số nhiều ICU phải tuân thủ chính xác quy tắc CLDR. Các công cụ dịch thông thường làm hỏng tất cả những thành phần này, khiến flutter gen-l10n âm thầm thất bại hoặc báo lỗi khó hiểu.

Các mục siêu dữ liệu có tiền tố @ bị dịch hoặc xóa, làm hỏng định nghĩa và nội dung mô tả của phần giữ chỗ

Tên phần giữ chỗ trong dấu ngoặc nhọn bị dịch, đổi tên hoặc loại bỏ, gây sự cố khi chạy

Dạng số nhiều ICU cần đúng danh mục CLDR cho từng ngôn ngữ nhưng các công cụ thông thường thường bỏ qua hoặc tạo cấu trúc không hợp lệ

Tiêu đề @@locale bị hỏng hoặc không khớp, khiến flutter gen-l10n gán bản dịch sai ngôn ngữ

Nguồn (tiếng Anh)
lib/l10n/app_en.arb
{
  "@@locale": "en",
  "appTitle": "My Flutter App",
  "@appTitle": {
    "description": "The title of the application"
  },
  "greeting": "Hello, {name}!",
  "@greeting": {
    "description": "A greeting with the user's name",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "John"
      }
    }
  },
  "itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}",
  "@itemCount": {
    "description": "Number of items in the cart",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "lastLogin": "Last login: {date}",
  "@lastLogin": {
    "placeholders": {
      "date": {
        "type": "DateTime",
        "format": "yMMMd"
      }
    }
  }
}
Bản dịch (tiếng Nhật)
lib/l10n/app_ja.arb
{
  "@@locale": "de",
  "appTitle": "Meine Flutter-App",
  "@appTitle": {
    "description": "The title of the application"
  },
  "greeting": "Hallo, {name}!",
  "@greeting": {
    "description": "A greeting with the user's name",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "John"
      }
    }
  },
  "itemCount": "{count, plural, =0{Keine Artikel} =1{1 Artikel} other{{count} Artikel}}",
  "@itemCount": {
    "description": "Number of items in the cart",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "lastLogin": "Letzte Anmeldung: {date}",
  "@lastLogin": {
    "placeholders": {
      "date": {
        "type": "DateTime",
        "format": "yMMMd"
      }
    }
  }
}

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

Mục siêu dữ liệu @

Bảo toàn chính xác mọi siêu dữ liệu có tiền tố @ như nội dung mô tả, phần giữ chỗ và chú thích kiểu theo định nghĩa

Bảo vệ phần giữ chỗ

Phát hiện và giữ nguyên các phần giữ chỗ có tên như {userName}, {count} và {price} trong mọi bản dịch

Dạng số nhiều CLDR

Tạo chính xác các danh mục số nhiều ICU (zero, one, two, few, many, other) cho từng ngôn ngữ đích theo quy tắc CLDR

Cấu trúc JSON

Giữ thứ tự khóa, cấu trúc lồng nhau và định dạng riêng của ARB khớp với tệp nguồn để bản diff gọn gàng

Hoạt động với bộ công nghệ Flutter của bạn

flutter gen-l10n (chính thức)
Easy Localization
Quốc tế hóa GetX

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.