BartyCrouch - определение базового языка

У меня есть проект Xcode ObjC со следующими языковыми свойствами в project.pbxproj

developmentRegion = English;
knownRegions = ( en, Base, sk, cs, );

Также в Info.plist для <key>CFBundleDevelopmentRegion</key> установлено значение <string>en</string>. Все файлы дизайнера (раскадровка, виды и т. д.) Созданы на английском языке.

Всякий раз, когда я запускаю bartycrouch interfaces -p "." в корневой папке проекта, я обновляю все файлы * .strings, однако все строки из файлов дизайнера записываются в файлы в папке cs.lproj (где должен быть чешский язык) вместо папку en.proj.

Что-то не так с моим проектом? Или есть способ (параметр?) Указать мой базовый язык для bartycrouch?

Я открыл проблему в проекте GitHub (https://github.com/Flinesoft/BartyCrouch/issues/91), но никакой реакции в течение двух недель, так что я надеюсь, что найду здесь более активных пользователей.

Мне удалось найти решение в исходной проблеме GitHub github.com/Flinesoft/BartyCrouch/issues/…

Almighty 29.09.2018 16:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
462
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я уже отвечал на этот вопрос по связанной проблеме с GitHub, но позвольте мне объяснить это здесь также для полноты:

Объяснение проблемы

Вот отрывок из изменений, происходящих в cs.lproj, когда BartyCrouch запускается в вашем проекте:

Давайте также посмотрим на ту же запись на языке sk.lproj:

На первый взгляд может показаться, почему Барти Крауч заменяет правильный чешский перевод английским? И почему этого не происходит на словацком языке?

Вот что происходит: если вы посмотрите на комментарий, вы заметите, что он одинаков для обоих языков. Фактически, при первом создании файлов строк в Xcode Xcode автоматически берет значения из XIB или раскадровки и помещает их в комментарии. Он также никогда не изменит значение комментария, даже если вы внесете изменения в файл XIB или Storyboard, оставив вам три разных значения для каждой записи: фактическое значение, значение комментария и значение XIB / Storyboard. Вначале последние два одинаковы, но, поскольку Xcode не обновляет их, со временем они могут отличаться.

Поскольку мы видим, что в комментарии значение указано на чешском языке, я могу предположить, что в то время, когда вы впервые разрешили Xcode сгенерировать файлы Strings, ваш XIB или Storyboard имели значения на чешском языке. Кажется, позже вы изменили это и сделали каждое значение в XIB или раскадровке на английском языке. BartyCrouch имеет встроенную функцию, которая автоматически обновляет значение комментария для вас. Вот почему мы видим изменение в строке комментариев для обоих примеров языков выше. Дополнительная функция BartyCrouch - в случае, если значение комментария точно совпадает с реальным значением, также обновлять реальное значение. Поскольку фактическое значение чешского перевода совпадает со значением комментария, именно это и произошло здесь, и что заставило BartyCrouch также обновить значение и заменить его новым значением на английском языке, которое он нашел в файле XIB или Storyboard.

Решение

Теперь, когда мы знаем, в чем проблема, давайте посмотрим, что можно сделать, чтобы решить эту проблему и / или предотвратить ее в будущем:

  1. Чтобы предотвратить повторение этой проблемы, следует использовать английский (или любой другой язык) в файле XIB или Storyboard с самого начала и никогда не менять язык.
  2. Однако, когда язык изменен, один из способов исправить это вручную - обновить значения комментария на новый язык вручную. Например:
/* Class = "UILabel"; text = "Proveďte synchronizaci."; ObjectID = "RvR-Nz-aYE"; */

нужно будет вручную изменить на

/* Class = "UILabel"; text = "Sync to get data."; ObjectID = "RvR-Nz-aYE"; */
  1. В качестве альтернативы вы также можете позволить BartyCrouch выполнить свою работу и один раз вручную отменить неправильные изменения (при этом сохраняя изменения комментария!). С этого момента (если вы снова не измените язык) проблема больше не должна возникать. Вот как я рекомендую вам исправить эту проблему - с помощью инструмента с графическим интерфейсом Git (например, SourceTree) это не займет много времени.

Я надеюсь, что смогу помочь.

Другие вопросы по теме