2016-07-20 3 views
0

Я разрабатываю приложение ios с xamarin в Visual Studio. Я пытаюсь добавить локализацию в файл Main.storyboard и файл LaunchScreen.xib по умолчанию, но я не могу заставить его работать.Xamarin iOS раскадровка локализации

Я следую документации here, и я также выполнил пример приложения (который работает нормально). Я скопировал структуру проекта, и я проверял файлы много раз, но я не могу видеть, что мои строки локализованы внутри файлов раскадровки или xib (LaunchScreen.xib).

Это мой Info.plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDisplayName</key> 
    <string>MyApp</string> 
    <key>CFBundleIdentifier</key> 
    <string>it.company.myapp</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.0</string> 
    <key>CFBundleVersion</key> 
    <string>1.0</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>MinimumOSVersion</key> 
    <string>9.0</string> 
    <key>UIDeviceFamily</key> 
    <array> 
     <integer>1</integer> 
     <integer>2</integer> 
    </array> 
    <key>UILaunchStoryboardName</key> 
    <string>LaunchScreen</string> 
    <key>UIMainStoryboardFile</key> 
    <string>Main</string> 
    <key>UIMainStoryboardFile~ipad</key> 
    <string>Main</string> 
    <key>UIRequiredDeviceCapabilities</key> 
    <array> 
     <string>armv7</string> 
    </array> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
     <string>UIInterfaceOrientationLandscapeLeft</string> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
     <string>UIInterfaceOrientationLandscapeLeft</string> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>it</string> 
    <key>CFBundleLocalizations</key> 
    <array> 
     <string>en</string> 
    </array> 
</dict> 
</plist> 

И это скриншот моей структуры проекта:

project_structure

Я видел, что локализация раскадровки Идентификаторы должны быть как «KID -c2-RCX». Это справедливо для моего файла LaunchScreen.xib, но не для файла Main.storyboard, который имеет простые числовые идентификаторы типа «192», «193» ecc. Это может быть проблема?

Что мне не хватает?

+0

Я бы перепроверить эти Идентификаторы в Xcode Interface Builder в. Откройте раскадровку в IB (щелкните правой кнопкой мыши -> открыть с -> конструктор интерфейса). Выберите 1 из меток/кнопок/и т. Д., Затем на вкладке Identity Inspector справа (это значок маленького ящика посередине) найдите «Идентификатор объекта». Это будет идентификатор, используемый вашим файлом Main.strings. Эти цифры звучат неправильно, но я не знаю. – dylansturg

+0

@DylanS Я проверил IB на Xcode. Ид теперь один и тот же, но если я добавлю еще один компонент ui (метка, кнопка ecc), IB генерирует правильный идентификатор, такой как «kId-c2-rCX». Visual studio продолжает генерировать simpel числовой идентификатор также со свежим пустым файлом раскадровки. Это ошибка Visual Studio? – Androidian

+0

Я попытался создать свой файл раскадровки непосредственно из xcode IB (который генерирует правильные идентификаторы), но локализация раскадровки все еще не работает :( – Androidian

ответ

0

Вы должны установить значение по умолчанию. Например, вы хотите локализовать textField placeHolder, чем hardcode значение по умолчанию для заполнителя, и локализация будет работать.

+3

привет @Vincent - можете ли вы приложить часть кода, чтобы продемонстрировать ваше предложение? – ymz

+0

Здесь вы можете видеть, что a дает значение по умолчанию владельцу места "placeholder" – Vincent

0

Я знаю, что это старый вопрос, но я хочу сообщить свое решение проблемы.

Вот моя локализация структура:

enter image description here

В моем решении я переименовал Main.strings -file с таким же именем, что моя раскадровки.

Теперь измените свой идентификатор локализации элемента ui на строку. В моем проекте это делает разные. Вот изображение, чтобы показать, что я имею в виду.

enter image description here

Откройте раскадровку в текстовом режиме и заменить эти идентификационные номера к тексту.

Теперь откройте свой Main.strings и введите свой предмет там.

enter image description here

Более подробная информация от: https://developer.xamarin.com/guides/ios/advanced_topics/localization_and_internationalization/

Смежные вопросы