Why can't I add localization to my iOS app? - ios

I'm trying to add a localization. I've read all those localization/internationalization guides from Apple and raywenderlich.com. I've marked all my code with NSLocalizedString macro, I've used genstrings to create Localizable.strings. But somehow I'm missing some important step.
When I try to add localization to my Localizable.strings I'm somehow restricted to English only.
When I try to add localization to project via "Editor"->"Add Localization" all language options are disabled.
Does anybody have any thoughts as to why am I restricted to English only? What have I missed?
I've tried to add localization to other projects with the same result. :(

You need to first add your localizations to your project. Click on the project file, ensure that the project, not the target, is selected in the middle pane and then choose the "Info" screen. There's a area called "Localizations" where you can add languages. You should then be able to localize your resources.

Another possible issue is that you are not selecting appropriately the project, which leads to all languages in the Add localization list being disabled.
By default the target may be selected, make sure you select the project instead. Then you can use the Add localization normally.

Something which kept me busy for too long. I looked over the language I needed (Swedish) in the first list and took the one from the "Other" list. Well my phone or emulator didn't change at all to Swedish. But when I took Swedish from the first list it got nicely updated when changing the language settings.

With Xcode 6, you can do it via Project Settings.

Related

Xcode: won't add localization

Usually adding a new language in a project is easy. I'm in the project tab, I press on "+" in the Localizations area, and then I choose the language that I need to add. It asks me which files I want to translate, I choose them, I press finish and then nothing. The new language won't appear. The project that I'm working on is full of frameworks and sub-projects. I didn't create it, so I don't know its full history.
In the end I fixed it by manually creating an "el.lproj" folder (for adding Greek) and copying the Localizable.strings from another language. Then I moved it into my project and it magically appeared in the localizations tab. I think it's kinda of a bug.

Xcode 10 - Unable to Localize UINavigation Controller Title

I have an app that I want to translate to Spanish. The app is very simple and uses a basic UINavigation Controller. The title is set in the main story board:
To add Spanish I did the followings:
Added Spanish in the project Localizations
My first question to you all is why is showing 4 files in English and 3 Files in Spanish, when I actually have 2 files for English and 2 Files for Spanish
I enabled location to the view controller
I added string file to the project as well. This is for labels and dynamic text within the views, and this is working as expected.
Edited the Main.strings (Spanish)
When running the app, I edited the scheme, and set the application Language to Spanish.
When the app launched and got to the main screen, I still see Welcome instead of "Bienvenidos" What am I missing?
Other things you should know, when adding localization I enabled and disabled this feature a few times for the storyboard trying different options. Also, when testing the app, I change the settings language to Spanish, I deleted and installed the app multiple times as well.
I'm using Xcode 10.1, Project Format is Xcode 9.3-compatible, iOS deployment target is 12.1
Hope someone can help.
Hope this helps someone else. With Xcode 10 the recommended way to do any localization is by selecting your project and perform an export for localization, just go to Editor > Export For Localization
Once you exported the project, make any changes to the .xliff files, images, etc.
In the .xliff file, each translation should have a <source>, <target> and <note> tag. In my case, many tags are missing. I manually added them, did the translation and import the translation into my project.
To import the localization just select your project and go to Editor > Import Localizations. Now everything should work as expected.
This video from WWDC helped me resolve my issue
https://developer.apple.com/videos/play/wwdc2018/404/
Hope this helps
For your first question, you probably have also localized your LaunchScreen.storyboard file. So you should have 3 localized files in total, except that for your Main.storyboard you have checked all three checkboxes (Base, English and Spanish) and since English is your development language, it counts for two.
As for your second question, if you're running in the simulator, just editing the scheme should be fine. Since you told that you enabled and disabled localization for your project something might have broken with Xcode. I've been there as well when I tried to remove a localization. Try to clean you project (Product -> Clean Build Folder) before running the app or even start the project from the scratch (if possible) without this adding/removing flow. Hope this helps.

Disable English localization with Xcode 5

I have searched related questions and tried many suggested methods but none seems to work.
I have a japanese-only App that when run on an english device gets UI items such as back buttons translated ("Back").
To achieve this I have:
Deleted the English from "Localizations" from my project and chose to delete localized files (was a single *.strings file).
Changed CFBundleDevelopmentRegion in my Info.plist from jp_JPto jp as I read it should match the name of the *.lproj folder.
Cleaned, deleted, closed Xcode, etc. But default UI items are still getting translated to english.
Also I get some weird behavior in Xcode 5 now:
Checking the "Use Base Internationalization" checkbook presents an empty "Choose files and reference language to create Base localization". Choosing either Cancel or Finish has no effect and nothing happens.
Clicking on the "+" button to add the Other > "Base (Base)" localization does nothing.
I thing that my problem seems to be that my Base localization is still somehow english but I can't find a way to change that. Any ideas?
I found that to truly remove English support I have to properly set the CFBundleDevelopmentRegion into a full valid region (e.g. ja_JP) and not just a language (just ja still resulted in English showing up).
When you have a valid region Xcode will show you the name of your country instead of the raw value in the Plist editor.
Seems like some modules, such as MFMailComposeViewController, get localized to English no matter what (tested on iOS 6 and 7).
I encountered the same issue. Here are the steps I did to get past them.
Localize your storyboard file.
Select your Storyboard file in Xcode.
In the “File Inspector”, under the “Localization” sub header, press the “Localize…” button.
A dialog appears that says “Do you want to localize this file? The file will be moved into the lproj folder for the following language.” It lists a language. For me it was “English” and I chose that. For you, I suspect it will be “Japanese”.
Press the “Localize” button.
If it warns you that your storyboard file has changed outside of the project, choose “Save anyway”. If you don't it deletes the storyboard from your project. This happened to me with a source controlled project, but not with a new empty project.
Go back to your project and check the “Use Base Internationalization” checkbox. Your storyboard should show up in the "Choose files and reference language to create Base localization" sheet.
If you go back to your storyboard, you will see “Base” as the checked localization. I had my language (English) show up as an option. When I checked it, a storyboard.strings file was created. Since my base was already in my preferred language, I didn’t need a strings file so I removed it. I presume that if I had another language, I could select that and get a storyboard.strings file for that language.

no language (tuk) support in localization tab, drop-down list of xcode 4

I want to localize my app in 3 languages: english, russian and the one that is not in the xcode localization drop-down list. So, what can i do to add the localization of the language that is not in the xcode list?
I know it's too late, but thought it would help somebody.
I just created a folder by myself in the project folder, called it tk.lproj. After that, i found that tk (turkmen) language in the drop-down list. Seems like Xcode automatically detects available localizations by scanning the project folder. But i wonder why it hides them out until you create a localization directory for it.

Remove an iOS app localization

In Bombr 1.2 I added a half-assed French localization, over time adding more strings to localize I've decided to drop the French localization. In Bombr 1.2.1 I removed the reference to fr.lproj/Localizable.strings from the Xcode project but the file still exists. Now that 1.2.1 is on the app store it still says that French is a supported language.
Will removing the fr.lproj folder and resubmitting correctly display the supported languages (this is my hunch), or is it possibly that iTunes Connect will not allow you to drop support for a language?
(I took a year of French in high school for fun, but not enough to translate my own app.)
Building on the answer given by #vanya, select your project from the list and delete the language under in the "localization" section.
If you want to remove app metadata localization, there's a delete menu on iTunesConnect
try to look at the info.plist which defines localizations and I guess some work in iTunesConnect should be done as well, but before approving an app
To remove the localization from Xcode (I'm using 4.2 on Snow Leopard) click on the file/folder in the sidebar, "Localizable.strings" and open the File Inspector (keyboard shortcut cmd-opt-1 or View > Utilities > Show File Inspector in the menu bar). You'll see a Localization pane with your localizations listed. Select the one you want to remove and click the minus sign to delete it.
So I landed on this question, but with some specific criteria:
I want to remove the base development language (English)
I want to keep the localized language (French)
None of the above answers worked and I couldn't find anything better on Stack Overflow. Eventually I found this gem: XCode: Remove localizations on build.
I develop in English, so the entire base of the app is in the English localisation. I then translated it into Finnish for the first release, but the intention was to only release the Finnish content and not the English.
Setting up a small script during a final Build phase works wonders to strip unwanted localisations:
#Remove english
rm -r "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/en.lproj"
# Remove base (iOS 9)
rm -r "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/Base.lproj"
Then I had some runtime errors because some Storyboard files were localized and located in the Base.lproj folder. I worked around this by doing the following:
Un-localized those Storyboards (unchecked all languages) and then "Moved to trash"
Dragged the Storyboards from the trash back into the project. (Basically moving the Storyboards from Base.lproj folder – which the script would delete – to the project folder.)
Note: none of these Storyboards were actually localized (the .strings files were all empty). All the translations were properly set in code using NSLocalizedString.

Resources