9

Nói chung tôi biết cách thực hiện bản địa hóa ứng dụng iOS, điều duy nhất là chọn giữa các cách có sẵn và thực hiện đúng cách. Vì vậy, tôi muốn hỏi bạn về cách tiếp cận l10n của bạn cho các dự án của bạn.Bản địa hóa cho ứng dụng iPhone - cách tiếp cận của bạn là gì?

Dưới đây là đầu vào của tôi:

  1. Tôi có 15 XIB file (đóng gói với rất nhiều cửa hàng IB không được tổng hợp như tài sản, nhưng sẽ phải được bản địa hoá).
  2. Rất có thể ứng dụng của tôi sẽ có 3-5 phiên bản ngôn ngữ, nhưng có thể tôi thậm chí sẽ sử dụng 10 ngôn ngữ trong tương lai.
  3. Trong tương lai gần, tôi dự định thêm mục tiêu mới có thể thay đổi thiết kế giao diện người dùng (phiên bản trả tiền/miễn phí).

Tôi thấy hai cách tôi có thể đi:

Lựa chọn A: địa hoá mỗi tập tin nib bằng cách làm cho XIBs thể bản địa hóa và bổ sung thêm phiên bản ngôn ngữ:

  1. Tôi lo sợ rằng với 15 XIBs và 3 -5 ngôn ngữ nó sẽ được bảo trì kinh dị sẽ đi ra khỏi kiểm soát của tôi khi tôi sẽ mở rộng nội địa hóa đến ~ 10 ngôn ngữ và giới thiệu mục tiêu mới (bảo trì kinh dị không phải là về SCM, tôi đang sử dụng git btw).
  2. Tôi cần đồng bộ hóa tất cả các phiên bản của XIB có thể ảnh hưởng đến quy trình yêu cầu thay đổi đau đớn.
  3. Tôi cũng lo ngại rằng gói ứng dụng của tôi sẽ phát triển lớn (hiện tại XIB sử dụng ~ 1,1 MB và chuyển thành ~ 120 kB tệp NIB).
  4. khi tôi quyết định thực hiện phiên bản iPad, số lượng XIB sẽ tăng trở lại.

Lựa chọn B: làm nội địa hóa trong mã bằng dây lên tất cả các cửa hàng cần tổng hợp chúng để tài sản và thiết lập nhãn/tiêu đề một cách chính xác:

  1. tôi sợ rằng ứng dụng của bộ nhớ dấu chân của tôi sẽ là thực sự lớn. Hoặc, xem xét MGMt mem thích hợp, tôi có nên xem xét vấn đề này không?

Tôi muốn chọn tùy chọn thứ 2 vì tôi thấy ít bị khuyết điểm hơn và có thể cho phép mọi thứ ở một nơi được kiểm soát trong mỗi bộ điều khiển chế độ xem, nhưng tôi muốn biết lựa chọn của bạn là gì? Cách nào hoạt động tốt hơn cho bạn?

CHỈNH SỬA: Tôi biết rằng ibtool có thể đơn giản hóa quy trình trong Gói A, nhưng tôi vẫn chưa thuyết phục được điều đó.

Trả lời

1

Vâng, tôi đã mong đợi phản hồi nhiều hơn một chút từ SO người dùng, nhưng đó là tiền phạt như sau khi một số nghiên cứu tôi đã thực hiện quyết định của riêng tôi để bỏ tùy chọn B và đi cho một phiên bản sửa đổi của tùy chọn A.

tôi đã được sử dụng nhiều ý tưởng từ một số Compile-time approach by Philippe Casgrain. Nói chung, nó sử dụng ibtool để tự động bản địa hóa ngòi khi xây dựng. Cách tiếp cận của Philippe giúp duy trì sự lành mạnh một cách hợp lý. Tất cả các chuỗi khác mà tôi sử dụng trong mã được xử lý bằng cách sử dụng phương thức NSLocalizedString dễ thực hiện trong trường hợp của tôi (chỉ sử dụng công cụ genstrings). Vấn đề duy nhất có khả năng xảy ra với tôi trong tương lai là thêm các mục tiêu mới với các bố cục UI khác nhau/được sửa đổi.

Thật khó để nói liệu đó có phải là lựa chọn tốt nhất hay không. Thời gian sẽ cho biết, vì vậy một ngày nào đó tôi sẽ cập nhật câu hỏi và chia sẻ với bạn cách quyết định làm việc cho tôi. Có thể ai đó sẽ được hưởng lợi từ tính năng này;)

3

Tôi đang sử dụng Tùy chọn B trong tất cả các dự án của mình, vì điều này cũng giúp tôi dễ dàng phân phối các tệp chuỗi cho người bản địa hóa. Kiểm tra tất nhiên là cần thiết sau đó để đảm bảo dây phù hợp với vị trí. Ngoài ra một số dự án không sử dụng các tập tin XIB, do đó, quá trình này luôn luôn giống nhau, không có vấn đề nếu các tập tin XIB được sử dụng hay không. Không có vấn đề về bộ nhớ với tùy chọn đó trong kinh nghiệm của tôi.

+0

bạn sẽ chọn tùy chọn B nếu XIB của bạn có 25 IBOutlets trung bình? Dây điện lên tất cả chúng, tổng hợp và chăm sóc quản lý bộ nhớ âm thanh tẻ nhạt với tôi. Bạn có lý do gì để chọn Tùy chọn B? – matm

+0

25 IBOutlets trong một XIB đơn lẻ? Điều đó có vẻ là một giao diện người dùng rất đông đúc. Screams cho thiết kế giao diện người dùng nâng cao;) Nhưng nói chung, tôi không thấy lý do không sử dụng tệp chuỗi. Xử lý nhiều XIB đó và điều chỉnh mọi thứ theo cách thủ công cho từng ngôn ngữ là một rắc rối lớn hơn nhiều. Nếu bạn biết cách quản lý bộ nhớ, không có nhược điểm nào. – Kerni

+0

Tôi cũng sẽ chọn tùy chọn B, vì bạn thường có một lối thoát cho một phần tử giao diện người dùng. Ngoại trừ các nhãn có thể là textFields, nhưng điều đó nghe có vẻ không quá nhiều. – GorillaPatch

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