2015-07-12 4 views
-2

Мне интересно найти локализованный строковый ключ для данного текста на экране.Как можно отменить поиск локализованной строки

Возможно ли это?

Например, в надуманный пример:

UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.text = NSLocalizedString(@"The key for this label",nil); 

// at runtime 

UILabel *theLabel = ... // get the label 
NSString *text = theLabel.text; 
NSLog(@"%@",text); // prints "Foo bar" 

// now I want to get the key: 

NSString *localizedKey = ???? NSLocalizedStringReverseLookup(text) 
NSLog(@"%@",localizedKey); // should print "The key for this label" 
+0

Помогает ли мой ответ? это вариант для вас? – nburk

+0

Вы сделали бы это, написав код. Однако я бы подумал, что этот подход полностью ошибочен. – gnasher729

ответ

0

Вы можете сделать это в некоторых случаях, как сказал nburk, но вы не можете сделать это в других:

  • Вполне возможно, что различные ключи относится к той же строке. Вы не можете узнать, какой ключ был оригинальным.
  • Строки на экранах могут содержать данные, вставленные в строку через %…. Тогда вы не найдете строку.

Почему вы хотите это сделать?

+0

ah true ... забыл о переменных в локализованной строке. ну, этот _could_ все еще будет реализован, но это действительно потребовало бы гораздо более сложной реализации и что-то вроде нечеткого поиска вместо конкретного поиска – nburk

+0

о том, что разные ключи относятся к одной и той же строке, этого легко избежать, просто не делая этого (в конце концов, системы, основанные на значении, основаны на предположении, что не имеют нескольких ключей для одного и того же значения). ваша цель, однако, полностью верна, и разработчик должен убедиться, что k/v-механизм используется правильно. – nburk

+0

У меня есть необычный случай, когда мне нужен SDK, интегрированный в стороннее приложение, и мне нужен базовый текст ярлыков –