локализация игры cocos2d без использования строкового файла - PullRequest
1 голос
/ 13 октября 2011

Я хочу добавить китайский язык для моей игры.но файл шрифта, который я использовал, предназначен только для английского языка.поэтому я не смогу использовать дополнительный строковый файл для добавления локализации.Кроме того, мне нужно отобразить определенное изображение для китайского языка.так что я думаю, что лучший выбор - это утверждение if-else.но когда я ищу в Интернете, я только нашел:

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];

я не знаю, как его использовать.пожалуйста, дайте мне пример кода

также было бы здорово, если бы я мог определить логическое значение в моем файле Constant.h, куда я поместил все свои константы (например, #define num_images_per_level 12)

вроде:

#define chinese_or_not some_boolean_statement

тогда я могу напрямую использовать

if (chinese_or_not) {
    //display some image for chinese player only
}

, пожалуйста, помогите мне (используя код).спасибо

1 Ответ

2 голосов
/ 13 октября 2011

Вы не сможете использовать #define для этой цели, так как #define - это директива препроцессора , что означает, что она используется компилятором, чтобы решить, какой код должен компилироваться, а какой быть проигнорированным Это делает его непригодным для любой логики времени выполнения (вещи, которые изменят поведение приложения после его компиляции).

Вы можете использовать одноэлементный класс для управления вашей локализацией или даже сохранить флаг в делегате приложения.

Я бы запросил текущий язык в делегатах вашего приложения applicationdidfinishlaunching и установил флаг (используя переменную singleton / global) и запросил бы его по всему приложению:

if ([[LocalizationManager instance] getLanguage] == kChinese) {...}

Для запроса языка вы должны использовать NSLocale класс .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...