doom-ios/code/ios/Localization.mm
2018-04-05 18:05:30 -05:00

134 lines
4.3 KiB
Text
Executable file

/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "Localization.h"
#include "LocalizationObjectiveC.h"
#import <Foundation/Foundation.h>
static NSBundle* mCurrentBundle = NULL;
static ID_LANGUAGE mCurrentLanguage;
static const char* mCurrentLanguageStr;
/*
========================
idLocalization::SetLanguage
Sets the language of the system with an enumeration passed in.
========================
*/
void idLocalization_SetLanguage( ID_LANGUAGE language ) {
NSString* langPath = nil;
switch( language ) {
case LANGUAGE_ENGLISH:
langPath = [[NSBundle mainBundle ] pathForResource:@"en" ofType:@"lproj" ];
break;
case LANGUAGE_FRENCH:
langPath = [[NSBundle mainBundle ] pathForResource:@"fr" ofType:@"lproj" ];
break;
case LANGUAGE_ITALIAN:
langPath = [[NSBundle mainBundle ] pathForResource:@"it" ofType:@"lproj" ];
break;
case LANGUAGE_GERMAN:
langPath = [[NSBundle mainBundle ] pathForResource:@"de" ofType:@"lproj" ];
break;
case LANGUAGE_SPANISH:
langPath = [[NSBundle mainBundle ] pathForResource:@"es" ofType:@"lproj" ];
break;
default:
langPath = [[NSBundle mainBundle ] pathForResource:@"en" ofType:@"lproj" ];
break;
}
mCurrentBundle = [[NSBundle bundleWithPath:langPath] retain ];
}
/*
========================
idLocalization::GetLanguage
Gets the current system's language
========================
*/
ID_LANGUAGE idLocalization_GetLanguage() {
return mCurrentLanguage;
}
/*
========================
idLocalization::Initialize
Gathers the local device's language, and sets that as the systems language.
========================
*/
void idLocalization_Initialize() {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defaults objectForKey:@"AppleLanguages"];
NSString* current = [[languages objectAtIndex:0] retain ];
mCurrentLanguageStr = [current UTF8String];
if([current isEqualToString:@"en"]){
mCurrentLanguage = LANGUAGE_ENGLISH;
} else if([current isEqualToString:@"fr"]){
mCurrentLanguage = LANGUAGE_FRENCH;
} else if([current isEqualToString:@"it"]){
mCurrentLanguage = LANGUAGE_ENGLISH;
} else if([current isEqualToString:@"sp"] || [current isEqualToString:@"es"]){
mCurrentLanguage = LANGUAGE_SPANISH;
} else if([current isEqualToString:@"ge"] || [current isEqualToString:@"de"]){
mCurrentLanguage = LANGUAGE_GERMAN;
} else {
mCurrentLanguage = LANGUAGE_ENGLISH;
}
idLocalization_SetLanguage( mCurrentLanguage );
}
/*
========================
idLocalization::GetString
Gets a String value from the pair key passed in from Localizable.strings file.
========================
*/
const char * idLocalization_GetString( const char * key ) {
NSString* nsKey = [NSString stringWithUTF8String:key];
NSString* nsString = [mCurrentBundle localizedStringForKey:nsKey value:nil table:nil];
const char* cString = nil;
if( nsString != nil ) {
cString = [nsString cStringUsingEncoding:NSWindowsCP1252StringEncoding];
} else {
cString = key;
}
return cString;
}
/*
========================
idLocalization::GetString
Gets a String value from the pair key passed in from Localizable.strings file.
========================
*/
NSString * idLocalization_GetNSString( NSString * key ) {
return [mCurrentBundle localizedStringForKey:key value:nil table:nil];
}