2013-02-25 36 views
12

(Có những câu hỏi tương tự. Một số câu trả lời là tôi đã cố gắng và thấy không hoạt động. Những người khác không có câu trả lời, tôi giả định vì các querents không cung cấp càng nhiều chi tiết càng tốt.)Bảng phân cảnh + nội dung bản địa hóa + tệp .strings không bản địa hóa tại thời gian chạy

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:

  • Added một địa hóa cơ sở, trong đó chuyển MainStoryboard.storyboarden.lproj-Base.lproj.
  • Đã thêm bản địa hóa tiếng Pháp, được 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 đề của phân đoạn trong một UISegmentedControl) trong tiếng Pháp MainStoryboard.storyboard.
  • 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 làm bản địa hóa tiếng Pháp bằng cách sử dụ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ơ sở MainStoryboard.storyboard trong dự án Xcode 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 đã chấp nhận rằng bảng phân cảnh tiếng 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, bởi vì tất cả chúng đều được nhận xét là IBUISegmentedControl...segmentTitles; 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.

Điều này không thỏa đáng. Tôi đã thử xóa ứng dụng khỏi trình mô phỏng và thậm chí xóa thư mục dữ liệu có nguồn gốc. Lỗi vẫn tồn tại.

Như tôi đã nói, tôi không thể chuyển tệp .storyboard sang phiên dịch không 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?

+0

Chuyển đổi các kịch bản để tự động Giao diện có không có hiệu lực. – user698970

+0

Câu trả lời cho một câu hỏi tương tự khác được đề xuất chạy ibtool trên bảng cốt truyện cơ bản và sử dụng nó như là khởi động cho tệp .strings thay vì một Trình tạo giao diện được cung cấp. Hai tệp giống hệt nhau. – user698970

+0

Đây là một biến khác: Bảng phân cảnh có rất nhiều cảnh không thể truy cập: Chúng không phải là bộ điều khiển ban đầu và chúng không có bất kỳ sự phân biệt nào dẫn đến chúng. (Không phải của tôi, tôi sẽ phải nói chuyện với nhà phát triển nghĩ rằng đây là một ý tưởng tốt.) Có thể can thiệp vào nội địa hóa .strings không? – user698970

Trả lời

6

Tôi gặp sự cố tương tự với UISegmentedControl s của mình. Nó chỉ ra rằng có một lỗi trong iOS 6: bản địa hóa cốt truyện .strings sẽ không hoạt động trên văn bản UISegmentedControl và trên UISearchBar trình giữ chỗ. Xem openradar này: http://openradar.appspot.com/radar?id=2159402

Bạn đã thử bản địa hóa các phần tử khác chẳng hạn như UILabel s? Cần làm việc.

+0

Tôi đã có cùng một vấn đề, chỉ có một UISearchBar không được bản địa hóa, trong khi tất cả các công cụ khác đã làm việc. Các giải pháp được mô tả bởi Susan Sabaria dưới đây là một cách giải quyết tốt cho lỗi này mà dễ dàng có thể dễ dàng mở rộng đến tiêu đề phạm vi là tốt. – ecotax

8

Dưới đây là cách tôi giải quyết nó:

trong viewDidLoad:

[self.segmentedControl setTitle:NSLocalizedString(@"Title", @"Your localize comment") forSegmentAtIndex:0]; 

Bạn có thể làm tương tự cho các placeholder tìm kiếm:

[self.searchBar setPlaceholder:NSLocalizedString(@"Your string placeholder", @"Your comment for localizers")]; 

Sau đó chỉ cần tạo một file Localizable.strings và nó sẽ hoạt động.

0

Đối với những người đang phát triển cho iOS 7 trở lên và tìm kiếm các định dạng .strings cho một thanh tìm kiếm, đây là cách bạn nên dịch các lĩnh vực placeholder ví dụ:

/* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */ 
"F3d-Ir-fni.placeholder" = "Nach Orten suchen"; 
Các vấn đề liên quan