2013-01-24 40 views
7

Chúng tôi đang phát triển một ứng dụng chạy trên các plattforms khác nhau (Windows, Windows RT, MacOSX, iOS, Android).Có cách nào để bản địa hóa một ứng dụng trên các nền tảng khác nhau

Vấn đề là cách quản lý các bản địa hóa khác nhau trên các Nền tảng khác nhau một cách dễ dàng. Các tệp ngôn ngữ trên các nền tảng khác nhau có các định dạng khác nhau (một số dựa trên xml, một số khác là cặp khóa-giá trị đơn giản và các định dạng khác hoàn toàn điên như trên MacOS)

Tôi chắc chắn, chúng tôi không phải là công ty đầu tiên vấn đề này, nhưng tôi đã không thể tìm thấy giải pháp dễ sử dụng để đạt được một "nguồn dữ liệu" trong đó các chuỗi được thu thập bằng các ngôn ngữ khác nhau (tốt nhất là Giao diện người dùng cho người dịch) và sau đó có thể xuất nó với các định dạng khác nhau cho các nền tảng khác nhau.

Có ai có giải pháp cho vấn đề này không?

Greetings Alexander

+2

Tôi nghĩ rằng, bạn có thể tạo định dạng của riêng bạn và cơ chế, nội địa hóa của riêng mình, mà gói trên tất cả các nền tảng. Không dễ, nhưng có sẵn – gaussblurinc

Trả lời

2

tôi khuyên bạn nên sử dụng GNU Gettext toolchain cho việc quản lý và sử dụng tại thời gian chạy hoặc

  • thực hiện một số thay thế cho thời gian chạy đọc như Boost.Locale,
  • thực hiện riêng (định dạng .mo là khá tầm thường) hoặc
  • sử dụng Translate Toolkit để chuyển đổi danh mục thư đến một số định dạng khác theo ý thích của bạn.

Bạn không thể sử dụng các thành phần libintl của GNU Gettext, bởi vì nó được cấp phép theo LGPL và cả về Apple AppStore và Windows Live cửa hàng không phù hợp với giấy phép đó. Nhưng nó thực sự tầm thường để reimplement bit bạn cần trong thời gian chạy.

Các Translate Toolkit thực reimplements tất cả hoặc hầu hết GNU Gettext và hỗ trợ nhiều định dạng nội địa hóa bổ sung, nhưng định dạng gettext .po có các công cụ miễn phí nhất cho nó (ví dụ poedit để chỉnh sửa địa phương và Weblate để chỉnh sửa trực tuyến) vì vậy tôi khuyên bạn nên gắn bó với nó anyway . Và đọc hướng dẫn sử dụng GNU Gettext, nó mô tả quá trình dự định và lý do đằng sau nó.

Tôi có trải nghiệm khá tốt với toolchain. Translate Toolkit dễ sử dụng khi bạn cần xử lý các chuỗi có thể dịch từ các tệp tài nguyên tùy chỉnh và Weblate dễ sử dụng cho người dịch của bạn, đặc biệt là khi bạn dựa vào các đối tác kinh doanh và người thử nghiệm ở nhiều quốc gia khác nhau.

Translate Toolkit cũng hỗ trợ trích xuất chuỗi có thể dịch từ HTML, do đó, quá trình tương tự có thể được sử dụng để dịch trang web của bạn.

0

Disclaimer: Tôi CTO và đồng sáng lập tại Tethras, nhưng sẽ cố gắng trả lời này trong một cách mà không chỉ là "Sử dụng dịch vụ của chúng tôi".

Vì điểm cao hơn chỉ ra ở trên, bạn thực sự cần chuẩn hóa nội dung của mình trên tất cả các nền tảng nếu bạn muốn có giải pháp một cửa để quản lý nội dung được bản địa hóa của mình. Điều này có thể là rất nhiều công việc và đòi hỏi nhiều mã hóa và viết kịch bản và gọi các công cụ khác nhau từ các SDK khác nhau để đến định dạng phổ biến nhằm phục vụ nhu cầu bản địa hóa của tất cả các định dạng tệp khác nhau mà bạn cần hỗ trợ. Độ dài và độ phức tạp của câu trước của tôi là tỷ lệ nghịch với số lượng công việc bạn sẽ cần phải làm để đến một giải pháp thuận lợi cho tất cả những điều này.

Tại Tethras, chúng tôi đã xây dựng một nền tảng giúp giảm bớt sự cần thiết cho các nhà xuất bản phần mềm đa nền tảng phải làm điều này. Chúng tôi hỗ trợ tất cả các định dạng gốc từ các nền tảng bạn liệt kê ở trên và có thể tận dụng bản dịch từ định dạng tệp này sang định dạng tệp khác. Ví dụ: dịch nội dung trong Localizable.strings từ ứng dụng iOS sang một số ngôn ngữ, sau đó tải tệp strings.xml tương đương của bạn từ Android hoặc foo.resx từ Windows RT lên hệ thống và sẽ tự động dịch các bản dịch cho bạn. Mọi chuỗi chưa được dịch sẽ được gắn cờ và bạn có thể đặt các cập nhật cho các chuỗi này.

Thực tế, Tethras là CMS dành cho nội dung được bản địa hóa trên nhiều định dạng tệp gốc khác nhau.

+0

Tantra trông rất tuyệt, nhưng có khả năng chia sẻ dây giữa các dự án không? Nếu không, nó sẽ không khắc phục được sự cố của chúng tôi ... –

+0

Có, bằng mọi cách bạn có thể chia sẻ bản dịch qua các dự án. Tất cả nội dung có thể bản địa hóa sẽ được trích xuất từ ​​các định dạng tệp gốc mà bạn tải lên tài khoản của mình. Hệ thống xác định các chuỗi phù hợp trên toàn bộ dự án và trên các tệp và tận dụng các bản dịch hiện có tự động cho bạn. Ví dụ: nếu chúng tôi dịch chuỗi X trong Localizable.strings cho ứng dụng iOS của bạn và bạn tải chuỗi Y lên chuỗi .xml cho ứng dụng Android của bạn, hệ thống sẽ xác định tất cả các chuỗi phù hợp bằng tiếng Anh giữa hai tệp. Bản dịch iOS sẽ được tự động thừa hưởng thành strings.xml. –

1

Tôi đã thực hiện một dự án cho iPhone và Android có nhiều bản dịch và tôi nghĩ rằng tôi có chính xác giải pháp bạn đang tìm kiếm.

Cách tôi giải quyết nó là đặt tất cả văn bản dịch trong bảng tính Excel và sử dụng macro VBA để tạo tệp dịch .string và .xml từ đó. Bạn có thể tải dụ Excel tờ cộng với VBA của tôi vĩ mô ở đây:

http://members.home.nl/bas.de.reuver/files/multilanguage.zip

Chỉ gần đây tôi cũng đã thêm sản lượng sơ bộ Visual Studio Resx, mặc dù đó là chưa được kiểm tra.

chỉnh sửa: btw cũng javascript của tôi xcode/eclipse converter có thể được sử dụng ..

+0

Tôi đã chơi với bộ chuyển đổi một chút, nhưng nó hoàn toàn bỏ qua các trường hợp góc quan trọng như các chuỗi chứa các dòng mới, dấu ngoặc kép, các khoảng trống và như vậy. Vâng, tôi đã thấy một vài chuỗi như vậy trong tự nhiên. –

+0

Được rồi, tôi có thể đoán chuỗi ký tự có dòng mới hoặc dấu ngoặc kép trông như thế nào, nhưng backspaces ..? Tôi sẽ xem xét điều này nếu bạn có thể gửi cho tôi một số trường hợp góc này, vì vậy tệp .xml hoặc .strings với một số chuỗi ngoại lệ này, địa chỉ thư của tôi có thể tìm thấy tại đây http://members.home.nl/bas .de.reuver / – BdR

Các vấn đề liên quan