NSLocalizedString Problem - Локализация переменной, содержащей строку - PullRequest
1 голос
/ 06 июня 2011
//Viewcontroller.m code
NSLocalizedString(@"attributes",@"Attribute Name")

//Localizable.string code
"attributes"="attributes-french"; 

Этот метод отлично работает для локализации @ "атрибутов"

Теперь какой должен быть код, если я хочу использовать переменную

Я использую

//Viewcontroller.m code
NSString *Value=@"attributes"
NSLocalizedString(Value,@"Attribute Name"); 

//Localizable.string code
"Value"="Value-french"; 

Это не работает.Может кто-нибудь сказать мне правильный способ использования NSLocalizdString для локализации переменной (которая содержит строку)?

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Вы не можете локализовать имя переменной.Вы локализуетесь только на значении переменной.Таким образом, ваш Localizable.strings должен содержать

"attributes"="attributes-french"

В любом случае вы можете изменять части строки, используя %@, как описано here.

0 голосов
/ 09 февраля 2016

Нет проблем с вызовом NSLocalizedString, скорее, с определением в вашем Localizable.strings файле.

Поскольку вы определяете переменную Value как «атрибуты», именно это функция будет использовать в качестве ключа для поиска правильной локализованной строки.

Это должно работать правильно:

//Viewcontroller.m code
NSString *Value=@"attributes"
NSLocalizedString(Value,@"Attribute Name"); 

//Localizable.string code
"attributes"="Value-french"; 

Я тестировал подобный код в Swift, который затем выглядел так:

//Viewcontroller.swift code
let Value="attributes"
NSLocalizedString(Value, comment:"Attribute Name")

//Localizable.string code
"attributes"="Value-french"; // <- don't forget the semicolon!
...