2013-02-26 39 views
7

Xcode 4.6, nhắm mục tiêu iOS 6, SDK iOS 6.1Nội dung bản địa hóa + Bảng phân cảnh + .strings -> không bản địa hóa

Tôi bắt đầu với bảng phân cảnh hoạt động tốt cho ứng dụng của mình; các chuỗi chứa trong tiếng Anh. Tôi muốn thêm bản địa hóa tiếng Pháp. Tôi đã làm điều này:

  • Đã thêm nội dung cơ bản, được chuyển MainStoryboard.storyboard từ en.lproj sang Base.lproj.
  • Đã thêm bản địa hóa tiếng Pháp, đã sao chép InfoPlist.strings (tiếng Anh) và MainStoryboard.storyboard (Base) vào fr.lproj.
  • Đã thay đổi một vài chuỗi (tiêu đề phân đoạn trong một UISegmentedControl) trong MainStoryboard.storyboard Pháp.
  • Trong Trình mô phỏng, hãy đặt ngôn ngữ thành tiếng Pháp.
  • Chạy ứng dụng từ Xcode.

Kết quả: Tính năng này hoạt động; các chuỗi đã thay đổi của tôi xuất hiện trong ứng dụng đang chạy.

Nhưng tôi muốn được tất cả ưa thích. Tôi muốn thực hiện bản địa hóa tiếng Pháp bằng tệp .strings. (Nó không phải chỉ là vấn đề được ưa thích; địa hóa tiếng Pháp sẽ được chuyển giao cho người dịch không kỹ thuật, người không thể được dự kiến ​​sẽ làm chủ Interface Builder.) Vì vậy:

  • chọn các MainStoryboard.storyboard cơ sở trong Xcode Dự án hoa tiêu.
  • Trong thanh tra Tệp, trong Bản địa hóa, đã thay đổi nội dung địa phương tiếng Pháp từ "Bảng phân cảnh cảm ứng Cocoa giao diện" thành "Chuỗi có thể định vị cục bộ".
  • Cảnh báo của Xcode đã được chấp nhận rằng bảng phân cảnh của Pháp sẽ bị hủy có lợi cho tệp .strings, xuất hiện trong trình chỉnh sửa Trợ lý.
  • Thực hiện hai chỉnh sửa tương tự; không có câu hỏi nào về việc chúng sai các chuỗi sai, vì tất cả chúng đều được nhận xét là phân đoạn IBUISegmentedControl ...Tiêu đề; và văn bản nhãn không xuất hiện ở bất kỳ nơi nào khác trong tệp .strings.
  • Đã xóa bản sao hiện tại (đang hoạt động) của ứng dụng khỏi trình mô phỏng.
  • Chạy ứng dụng.

Kết quả: Chế độ xem sử dụng bản địa gốc (tiếng Anh) gốc, thay vì tải chuỗi tiếng Pháp.

Chuyển đổi thành Tự động trả lời không có hiệu lực. Xóa ứng dụng khỏi trình giả lập không có hiệu lực. Việc xóa thư mục Các sản phẩm có nguồn gốc không có hiệu lực. Một tràn ngăn xếp được đề xuất bằng cách sử dụng ibtool để tạo tệp .strings thay vì Xcode; hai tệp được tạo giống hệt nhau.

Điều này không thỏa đáng. Như tôi đã nói, tôi không thể chuyển một tập tin .storyboard sang một dịch giả phi kỹ thuật. Làm cách nào để iOS có thể chấp nhận bản địa hóa bảng phân cảnh từ tệp .strings?

Trả lời

4

Tôi hy vọng bạn đã giải quyết xong. tôi đã cùng một vấn đề (kèm bản dịch tiếng Ý) và tôi giải quyết nó theo cách này:

1) File Localizable.string trong it.lproj

2) sử dụng NSLocalizedString (@ "TEST", @ "bình luận ") phương thức mà tại đó cần

3) thêm Localizable.string trong Giai đoạn xây dựng-> Sao chép tài nguyên gói Bước cuối cùng không nhất thiết trong iOS 5.1.

tôi giải quyết nhờ vào phản ứng của Cocoanetics trong [câu hỏi]: Base internationalization and multiple storyboard not working right

5

Enable hộp kiểm nội địa hóa tiếng Anh, sử dụng cài đặt Localization Strings:

Localization settings

sạch thư mục xây dựng của bạn (⌥⇧ ⌘K) và xây dựng lại.

+0

Vệ sinh thư mục xây dựng đã giải quyết được sự cố cho tôi. – Robert

1

Để thêm câu trả lời của claymation về cách tạo bản dựng sạch, nó cũng giúp xóa ứng dụng khỏi Trình mô phỏng iOS.

Nó có thể liên quan đến những gì John Hess's answer describes.

1

Đã phải chuyển đổi tệp chuỗi của tôi thành bảng phân cảnh rồi quay lại tệp chuỗi để làm việc này. Nực cười. Apple có thể học được một vài điều từ Microsoft về việc tạo ra các công cụ phát triển đáng tin cậy hơn.

+0

Điều đó cũng xảy ra với tôi. : 3 –

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