{"id":794,"date":"2014-09-26T20:05:51","date_gmt":"2014-09-26T20:05:51","guid":{"rendered":"https:\/\/www.devfright.com\/?p=794"},"modified":"2014-09-26T20:05:51","modified_gmt":"2014-09-26T20:05:51","slug":"localization-xcode-6","status":"publish","type":"post","link":"https:\/\/www.devfright.com\/localization-xcode-6\/","title":{"rendered":"Localization in Xcode 6 &#8211; Tutorial"},"content":{"rendered":"<p>Your app is available around the world, but you&#8217;ve only made your app in the English language?  You want to offer your app in the native language of ever user&#8230; but how?<\/p>\n<p>Apple has 150 App Stores around the world with hundreds of millions of users. If your goal is to get as many downloads as possible, then make it available in every supported language (there are 40!!!).  Maximize your apps potential via localization!<\/p>\n<p>Localization is the ability of your app to display text, images, sounds, and numeric formats(dates and numbers), in the users device language.  Localization should be standard practice in all apps, but prior to Xcode 6 it was quite a bit of work.<\/p>\n<p>Apple has gone out of their way to simplify this process and after reading this demo I think you&#8217;ll be amazed. Xcode 6 makes localization a &#8220;pas sorcier&#8221;, or &#8220;no brainer&#8221;.<!--more--><\/p>\n<p>We typically create a text string object like this&#8230;<\/p>\n<pre class=\"lang:swift decode:true \" >NSString *textString = @\"My Text\";<\/pre>\n<p>or<\/p>\n<pre class=\"lang:swift decode:true \" >self.label.text = [NSString stringWithFormat:@\"My Text\"];<\/pre>\n<p>But this is only good for english and cannot be translated.<\/p>\n<p>To add the power of localization to your text objects simply add the following:<\/p>\n<pre class=\"lang:swift decode:true \" >self.label.text = NSLocalizedString(@\"YOUR TEXT\",@\"A DESCRIPTION OF WHAT IT IS\");<\/pre>\n<p>or<\/p>\n<pre class=\"lang:swift decode:true \" >NSString *textString = [NSString localizedStringWithFormat:NSLocalizedString(@\"YOUR TEXT\", @\"A DESCRIPTION OF WHAT IT IS\")];<\/pre>\n<p>When this format is used, the first argument is the text string that the app will display, and the second argument is a text string which is a note to the translator providing a description of what is being translated. This is important for the translator to understand the context of what they are translating.<\/p>\n<p>Let&#8217;s make a project to demonstrate. <\/p>\n<p>Create a New Project&#8230;Single view application, iPhone, Objective-C.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png\" alt=\"swiftNewProj\" width=\"575\" height=\"338\" class=\"aligncenter size-full wp-image-814\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png 575w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1-300x176.png 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/p>\n<p>Select Storyboard. Click the inspector pane and uncheck <em>Use Class Sizes<\/em>.  This will create an &#8220;iPhone&#8221; looking view controller in the storyboard.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/fileinspect1.png\" alt=\"fileinspect\" width=\"535\" height=\"445\" class=\"aligncenter size-full wp-image-815\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/fileinspect1.png 535w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/fileinspect1-300x249.png 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>Drag on an a label, a text field, text view, and a label.<br \/>\nControl+Drag from the storyboard objects to the .h file and name your IBOutlets.<br \/>\nThe .h file should look like the code below:<\/p>\n<pre class=\"lang:swift decode:true \" >#import &lt;UIKit\/UIKit.h&gt;\r\n\r\n@interface ViewController : UIViewController\r\n\r\n@property (weak, nonatomic) IBOutlet UILabel *label;\r\n@property (weak, nonatomic) IBOutlet UITextField *textField;\r\n@property (weak, nonatomic) IBOutlet UITextView *textView;\r\n@property (weak, nonatomic) IBOutlet UILabel *author;\r\n\r\n@end<\/pre>\n<p>In the implementation file, add text to the objects using NSLocalizedString.  I&#8217;ll use a quote for this example.<\/p>\n<p>The .m file<\/p>\n<pre class=\"lang:swift decode:true \" >#import \"ViewController.h\"\r\n\r\n@interface ViewController ()\r\n\r\n@end\r\n\r\n@implementation ViewController\r\n\r\n- (void)viewDidLoad {\r\n    [super viewDidLoad];\r\n    \/\/ Do any additional setup after loading the view, typically from a nib.\r\n    _label.text= NSLocalizedString(@\"English\", @\"Language Label\");\r\n    _textField.text = NSLocalizedString(@\"Quote\", @\"Quote Word\");\r\n    _textView.text = NSLocalizedString(@\"It's choice - not chance - that determines your destiny.\", @\"Quote Body\");\r\n    _author.text = NSLocalizedString(@\"- Jean Nidetch\", @\"Author Name\");\r\n}\r\n\r\n- (void)didReceiveMemoryWarning {\r\n    [super didReceiveMemoryWarning];\r\n    \/\/ Dispose of any resources that can be recreated.\r\n}\r\n\r\n@end<\/pre>\n<p>Build and Run in the simulator.<\/p>\n<p>At this point your project should look like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/localization-app-demo-300x532.png\" alt=\"localization-app-demo\" width=\"300\" height=\"532\" class=\"alignleft size-medium wp-image-816\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/localization-app-demo-300x532.png 300w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/localization-app-demo-576x1024.png 576w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/localization-app-demo.png 640w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/localization-app-demo-300x532@2x.png 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Quit the simulator and select the project.  Under the EDITOR menu select <em>Add Localization<\/em>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/addLocalization1.png\" alt=\"addLocalization\" width=\"450\" height=\"207\" class=\"aligncenter size-full wp-image-817\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/addLocalization1.png 450w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/addLocalization1-300x138.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p>Select the languages you will be translating to.  This is done one language at a time.  Once finished in the EDITOR menu select &#8220;Export For Localization&#8230;&#8221;<\/p>\n<p>Xcode will create a folder containing individual files for each language you selected.<\/p>\n<p>In this demo I have selected French, German, Hebrew, Italian, and Simplified Chinese.  Okay, maybe a lot for a demo but&#8230; why not.<\/p>\n<p>These files can then be sent to a translation service (recommended) or edited by you (not recommended).<\/p>\n<p>The file is a standard XLIFF format file which has become an accepted standard for translation services to work with.<\/p>\n<p>For a list of Apple recommended third party localization providers, visit the Apple Developer site at https:\/\/developer.apple.com\/internationalization\/#vendors.<\/p>\n<p>The unedited translation file is an XML document.  Here is a portion of the Italian file to be translated.<br \/>\n&#8220;SOURCE&#8221; is the original text in the label, text field, or text view.<br \/>\n&#8220;NOTE&#8221; Is the note for the translator so the translation can be in the correct context.<br \/>\nBetween SOURCE and NOTE is where the translation will be placed as the TARGET.<br \/>\nThis is NOT recommended.  Translations should be completed by a certified translation service.<\/p>\n<pre>\r\n      <trans-unit id=\"English\">\r\n        <source>English<\/source>\r\n        <note>Language Label<\/note>\r\n      <\/trans-unit>\r\n      <trans-unit id=\"It's choice - not chance - that determines your destiny.\">\r\n        <source>It's choice - not chance - that determines your destiny.<\/source>\r\n        <note>Quote Body<\/note>\r\n      <\/trans-unit>\r\n<\/pre>\n<p>This is the same file edited.<\/p>\n<pre>\r\n      <trans-unit id=\"English\">\r\n        <source>English<\/source>\r\n        <target xml:Language=\"it\">Italian<\/target>\r\n        <note>Language Label<\/note>\r\n      <\/trans-unit>\r\n      <trans-unit id=\"It's choice - not chance - that determines your destiny.\">\r\n        <source>It's choice - not chance - that determines your destiny.<\/source>\r\n        <target xml:Language=\"it\">E 'la scelta - non casuale - che determina il tuo destino.<\/target>\r\n        <note>Quote Body<\/note>\r\n      <\/trans-unit>\r\n<\/pre>\n<p>Once your files have returned from the translation service, select your project, and under the EDITOR menu select &#8220;Import Localizations&#8230;&#8221;.<\/p>\n<p>Import each language file one at a time.  Once completed you can test in the Scheme editor. Product > Scheme > Edit Scheme.  Under Application Language, select the language you want to test, then Build and Run in the simulator. You should see the text and labels display the translated text strings in the simulator.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/scheme1.png\" alt=\"scheme\" width=\"450\" height=\"255\" class=\"aligncenter size-full wp-image-818\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/scheme1.png 450w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/scheme1-300x170.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p>What if you add another text field or image view after the translations have been done and imported?  No problem!  Just repeat the export process but this time you have an option to &#8220;include existing translations&#8221; Make sure that is selected.  You&#8217;ll notice Xcode is exporting to the folder you created.  I like to add ver2, or something to the file so that I don&#8217;t overwrite the original and I know there is a newer version. Click Save.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/rexport1.png\" alt=\"rexport\" width=\"450\" height=\"193\" class=\"aligncenter size-full wp-image-819\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/rexport1.png 450w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/rexport1-300x128.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p>Your localized(translated) files will be exported with the existing translations as well as the new labels,field, or strings that needs translation.  This way your translator can see what has been completed, and only worry about the additions.<\/p>\n<p>To demonstrate how Xcode handles date formatting for different regions around the world, let&#8217;s add a date field and create a formatter. By using a date formatter Xcode will automatically adjust the date to be correct for the region.<\/p>\n<p>Add a label to the view controller. Open the assistant editor. Control+Drag from the label to the .h file and name the UILabel <em>dateLabel<\/em>.<\/p>\n<p>Xcode knows how to handle region specific number and date formats as long as the numbers and dates are passed through a formatter.  <\/p>\n<p>In the implementation file set up the date formatter.<\/p>\n<pre class=\"lang:swift decode:true \" >-(NSDateFormatter *)dateFormatter{\r\nstatic NSDateFormatter *dateFormatter = nil;\r\nif (dateFormatter == nil) {\r\ndateFormatter = [[NSDateFormatter alloc]init];\r\ndateFormatter.dateStyle = NSDateFormatterMediumStyle;\r\ndateFormatter.timeStyle = NSDateFormatterShortStyle;\r\n}\r\nreturn dateFormatter;\r\n}<\/pre>\n<p>In viewDidLoad add a date to the date label using the formatter.<\/p>\n<pre class=\"lang:swift decode:true \" >NSDate *date = [NSDate date];\r\n    self.dateLabel.text = [self.dateFormatter stringFromDate:date];<\/pre>\n<p>The complete .m file&#8230;<\/p>\n<pre class=\"lang:swift decode:true \" >#import \"ViewController.h\"\r\n\r\n@interface ViewController ()\r\n\r\n@end\r\n\r\n@implementation ViewController\r\n\r\n- (void)viewDidLoad {\r\n    [super viewDidLoad];\r\n    \/\/ Do any additional setup after loading the view, typically from a nib.\r\n    \r\n    _textField.text = NSLocalizedString(@\"Quote\", @\"Quote Word\");  \r\n    _textView.text = NSLocalizedString(@\"It's choice - not chance - that determines your destiny.\", @\"Quote Body\");\r\n    _author.text = NSLocalizedString(@\"- Jean Nidetch\", @\"Author Name\");\r\n    _label.text= NSLocalizedString(@\"English\", @\"Language Label\");\r\n    \r\n    NSDate *date = [NSDate date];\r\n    self.dateLabel.text = [self.dateFormatter stringFromDate:date];\r\n\r\n}\r\n\r\n- (void)didReceiveMemoryWarning {\r\n    [super didReceiveMemoryWarning];\r\n    \/\/ Dispose of any resources that can be recreated.\r\n}\r\n-(NSDateFormatter *)dateFormatter{\r\n    static NSDateFormatter *dateFormatter = nil;\r\n    if (dateFormatter == nil) {\r\n        dateFormatter = [[NSDateFormatter alloc]init];\r\n        dateFormatter.dateStyle = NSDateFormatterMediumStyle;\r\n        dateFormatter.timeStyle = NSDateFormatterShortStyle;\r\n    }\r\n    return dateFormatter;\r\n}\r\n@end<\/pre>\n<p>Return to the Scheme and try different language and region settings.  This is just a primer to localization but it should get you off to a good start.<\/p>\n<p>You can download the completed project here. <a href=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/localizeDemo.zip\">localizeDemo<\/a><\/p>\n<p>This is a screen shot running with French selected in the Scheme.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/french-300x532.png\" alt=\"french\" width=\"300\" height=\"532\" class=\"aligncenter size-medium wp-image-820\" srcset=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/french-300x532.png 300w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/french-576x1024.png 576w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/french.png 640w, https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/french-300x532@2x.png 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Your app is available around the world, but you&#8217;ve only made your app in the English language? You want to offer your app in the native language of ever user&#8230; but how? Apple has 150 App Stores around the world with hundreds of millions of users. If your goal is to get as many downloads [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-794","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-tutorial","7":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Localization in Xcode 6 - Tutorial<\/title>\n<meta name=\"description\" content=\"Localization is the ability of your app to display text, images, sounds, and numeric formats.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.devfright.com\/localization-xcode-6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Localization in Xcode 6 - Tutorial\" \/>\n<meta property=\"og:description\" content=\"Localization is the ability of your app to display text, images, sounds, and numeric formats.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.devfright.com\/localization-xcode-6\/\" \/>\n<meta property=\"og:site_name\" content=\"DevFright\" \/>\n<meta property=\"article:published_time\" content=\"2014-09-26T20:05:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png\" \/>\n<meta name=\"author\" content=\"Martin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MatthewN\" \/>\n<meta name=\"twitter:site\" content=\"@MatthewN\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Martin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/\"},\"author\":{\"name\":\"Martin\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#\\\/schema\\\/person\\\/95b0601118aa818f7db630f8d44cc47d\"},\"headline\":\"Localization in Xcode 6 &#8211; Tutorial\",\"datePublished\":\"2014-09-26T20:05:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/\"},\"wordCount\":922,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.devfright.com\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/swiftNewProj1.png\",\"articleSection\":[\"Tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/\",\"url\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/\",\"name\":\"Localization in Xcode 6 - Tutorial\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.devfright.com\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/swiftNewProj1.png\",\"datePublished\":\"2014-09-26T20:05:51+00:00\",\"description\":\"Localization is the ability of your app to display text, images, sounds, and numeric formats.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.devfright.com\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/swiftNewProj1.png\",\"contentUrl\":\"https:\\\/\\\/www.devfright.com\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/swiftNewProj1.png\",\"width\":575,\"height\":338},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/localization-xcode-6\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.devfright.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Localization in Xcode 6 &#8211; Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#website\",\"url\":\"https:\\\/\\\/www.devfright.com\\\/\",\"name\":\"DevFright\",\"description\":\"Learn How to Create iOS Apps\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.devfright.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#organization\",\"name\":\"DevFright\",\"url\":\"https:\\\/\\\/www.devfright.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.devfright.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/DF-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.devfright.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/DF-logo.png\",\"width\":1024,\"height\":1024,\"caption\":\"DevFright\"},\"image\":{\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/MatthewN\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.devfright.com\\\/#\\\/schema\\\/person\\\/95b0601118aa818f7db630f8d44cc47d\",\"name\":\"Martin\",\"sameAs\":[\"http:\\\/\\\/m45apps.com\"],\"url\":\"https:\\\/\\\/www.devfright.com\\\/author\\\/martin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Localization in Xcode 6 - Tutorial","description":"Localization is the ability of your app to display text, images, sounds, and numeric formats.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.devfright.com\/localization-xcode-6\/","og_locale":"en_US","og_type":"article","og_title":"Localization in Xcode 6 - Tutorial","og_description":"Localization is the ability of your app to display text, images, sounds, and numeric formats.","og_url":"https:\/\/www.devfright.com\/localization-xcode-6\/","og_site_name":"DevFright","article_published_time":"2014-09-26T20:05:51+00:00","og_image":[{"url":"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png","type":"","width":"","height":""}],"author":"Martin","twitter_card":"summary_large_image","twitter_creator":"@MatthewN","twitter_site":"@MatthewN","twitter_misc":{"Written by":"Martin","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#article","isPartOf":{"@id":"https:\/\/www.devfright.com\/localization-xcode-6\/"},"author":{"name":"Martin","@id":"https:\/\/www.devfright.com\/#\/schema\/person\/95b0601118aa818f7db630f8d44cc47d"},"headline":"Localization in Xcode 6 &#8211; Tutorial","datePublished":"2014-09-26T20:05:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.devfright.com\/localization-xcode-6\/"},"wordCount":922,"commentCount":4,"publisher":{"@id":"https:\/\/www.devfright.com\/#organization"},"image":{"@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png","articleSection":["Tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.devfright.com\/localization-xcode-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.devfright.com\/localization-xcode-6\/","url":"https:\/\/www.devfright.com\/localization-xcode-6\/","name":"Localization in Xcode 6 - Tutorial","isPartOf":{"@id":"https:\/\/www.devfright.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#primaryimage"},"image":{"@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png","datePublished":"2014-09-26T20:05:51+00:00","description":"Localization is the ability of your app to display text, images, sounds, and numeric formats.","breadcrumb":{"@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.devfright.com\/localization-xcode-6\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#primaryimage","url":"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png","contentUrl":"https:\/\/www.devfright.com\/wp-content\/uploads\/2014\/09\/swiftNewProj1.png","width":575,"height":338},{"@type":"BreadcrumbList","@id":"https:\/\/www.devfright.com\/localization-xcode-6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.devfright.com\/"},{"@type":"ListItem","position":2,"name":"Localization in Xcode 6 &#8211; Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/www.devfright.com\/#website","url":"https:\/\/www.devfright.com\/","name":"DevFright","description":"Learn How to Create iOS Apps","publisher":{"@id":"https:\/\/www.devfright.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.devfright.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.devfright.com\/#organization","name":"DevFright","url":"https:\/\/www.devfright.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.devfright.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.devfright.com\/wp-content\/uploads\/2025\/03\/DF-logo.png","contentUrl":"https:\/\/www.devfright.com\/wp-content\/uploads\/2025\/03\/DF-logo.png","width":1024,"height":1024,"caption":"DevFright"},"image":{"@id":"https:\/\/www.devfright.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/MatthewN"]},{"@type":"Person","@id":"https:\/\/www.devfright.com\/#\/schema\/person\/95b0601118aa818f7db630f8d44cc47d","name":"Martin","sameAs":["http:\/\/m45apps.com"],"url":"https:\/\/www.devfright.com\/author\/martin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/posts\/794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/comments?post=794"}],"version-history":[{"count":0,"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/posts\/794\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/media?parent=794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/categories?post=794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devfright.com\/wp-json\/wp\/v2\/tags?post=794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}