How do you localize your iPhone applications? - iphone

I want to localize my iPhone applications into other languages except from English, but I don't know anyone who would speak Italian or French.
How do you translate your application name, description and application contents into other languages? Who may help in this issue? Are there any iPhone-oriented translation companies?
Thank you in advance.

There are lots of companies that do this. From expensive ones that make little sense, to just a guy in the country you're interested in who knows english real well and would be happy with $20 and a thank you. You could:
Google for the more established services
release your product and mention in your about page that you are looking for translation assistance from your users and hope they like your product enough that they contact you
use a service like Amazon's Mechanical Turk to bid it out to an individual

I would start by building a framework that makes it easy to localize. Ultimately, somebody is going to have to translate it, but you might want to start by removing any string literals from the actual application itself and replace them with references to some sort of data source. I've never done it with iPhone, but this is common with multilingual web-apps where they have all string literals stored in a database and the fields are populated at runtime based on the location. This makes it exceptionally easy to localize because, if all you are doing is reading an XML file, you only need to swap out the file.

Related

How to model multilingual database with Zend, l18n mysql?

I know this topic was discusses a couple of times, but none of them represents the ultimate solution for me.
Situation
I'm designing a relational mysql database which later should hold multilingual content. You know this from the Wikipedia or Microsoft Tech Support Pages. The contents should be the same for every language. e.g If translations are missing the site offers you the same content automatically translated or in the languages which the information is available in. If some values are not set, it should fallback to the second or default browser language or translate it e.g. through google. Development environment is Zend.
My ideas so far are for Solving the Problem:
Two Primary Keys: (ID, Language)
Advantage: Easy Database Access through database abstraction layers.
Problem: Foreign Keys, Relations ships, Fallbacks
Columns with language suffix:
Advantage: DB Performance, No relational Problems.
Problem: Database abstraction layers cannot handle this?
Has any concept proven itself or is preferable over the other? Has anyone already created something like this and can share his experience with me? Does a modified Zend DB Controller exist for this situation? How do you link this information to a form?
Thank you for your help, hints and suggestions!
Kind regards,
Manuel
The second option would be not maintainable (this should be added on the minuses side). To actually add another language you'll need to modify table and abstraction layers. Sounds like a nightmare.
The first option seems much more promising but unfortunately there is a lot to do to make it work. However, from my experience this is rather typical solution, so I would not reinvent the wheel.
What I have to add is, language fallback should be done on the Zend side, database would miss some information. You may think of some kind of index table to hold information such as unique id of the contents and available languages. If you need to serve something, you would read such record, compare it against of Accept Languages and ask database again for valid contents (using the most suitable language). The only problem is, you would need to create such an index table somehow (the best way I see would be trigger on inserting contents to your content table).
A lot of work but the problem is not too easy.
I am working on the exact same problem right now.
Somehow it does not make sense to me to add everything into the same database. Lets say I want to go to the extreme and support some 50 languages this would just bloat my DB. So, I tend to keep my main DB in my main language and then introduce some Zend_Translate concept into it. Zend_Translate should give you the fallback solution you are looking for. While the main navigation and core design is not much of a problem for my web site my biggest concern right now is how to store all the main content and how to translate because these elements contain HTML among other things. For the main content I will probably use some alternate approach and use a separate DB with tables for each language.
My plattform will be a community driven database. So I actually gonna rely on humans translating it. You have to store the information anyways, so my first concern is not the database size or performance, but easy usability. So far my idea is to implement some structure as described above, not yet sure if i'll do it in doctrine or not.
Language decision:
Start, application gets users preset language, secondary language, english mother-tong of the article. Fetching the article from the database I will check the following for every column: 1. is the primary language available? 2. Is the secondary language available? 3. If neither of them, display article in mother-tong or english and offer the user to translate it with suggestions from the google translate api. I guess it's gonna be quite a bit of coating and manipulating controllers or building a business model doing this.
#tawfekov is something like this or similar easily realizable with doctrine?

Is it common to localize you iphone app? Do you localize by default?

Trying to settle a debate with a client. I didnt localize the strings and images in the application and it didnt come up during the 3 week define and discover. They seem to think its a basic best practice and that it should have been done by default. I disagree, especially if there are no planned languages otw.
Seems like you would leave this for demand by users
So, Id like to ask the community to chime in on this and tell me if you by default have localized your iphone app or not?
I ask this to not only help me understand where I might have missed something but also to help others in the future as to what is considered "default" and "best practice"
This question is going to spark a lot of opinion. Because Apple makes it ridiculously easy on iOS to localize strings, I personally feel you should set all apps up for localization by default. Anywhere you find yourself defining a literal string, substitute it with NSLocalizedString(), until it becomes second nature. Then, if you decide you want to localize later, you don't have to hunt and peck all over the place. If you never localize, you lose nothing except a few keystrokes.
A true localization will probably have localized NIBs to (may have different sized buttons for different languages, for instance). Still, if you assign all strings that will appear in the NIB in code with NSLocalizedString(), rather than in Interface Builder, you'll likely save time in the long run.
The fact that the AppStore makes your app visible in so many countries greatly increases the demand to localize. Read this post by Wil Shipley about the money you could be making by reaching many markets.
First, you have to internationalize it, that is to write your code such that it is easy to add new languages. Default - and first - language is usually english (Apple makes things easier if you start with english and customers are more likely to buy an app in english only than in swahili only).
Second, you can localize it to languages that are important for customers of your app. spanish, chinese, french, farsi, ...
How could you possibly know what languages to use for localization without input from your client?
Assuming it was never discussed during requirements, it appears you are in the right here. If they wanted localized versions of their app, they should have requested it.
#greg has a very good point, in that it would have been beneficial to use localized strings from the very beginning, but setting up an app for localization isn't especially difficult. It's the actual translations that are difficult and expensive.
My small sample suggests that the vast majority of apps in the U.S. App store are not localized to any other language.
It may be technically easy, but can be editorially very difficult unless you have educated multi-lingual staff available (hiring multiple contractors to cross-review translations for grammatical correctness, doing multi-lingual app descriptions, app documentation, web site support pages, marketing materials, etc. in all the languages that might be expected for an app localized to those languages. Keeping all that editorially synchronized with every update/bug fix.)
It also appears that lot of apps add multi-lingual support only after International sales get to the level which can support the above initial and on-going costs.
i ask them going into it.
if i need a default answer, it is 'yes, prepare for localization'. it takes far less time to add it as you go, than the remove, rebuild, retest cycles.

Which is the correct way to develop a multilingual website on C# .NET MVC2?

We have developed a web application that initially was thought to be only in one language, however now I'm being required to make it multi-lingual, the thing is I don't know where to start.
Is there any advice or text you may refer me to?
Thank you!
.Net provides a lot of functionality in it's System.Globalisation namespace, use that for displaying dates & numbers in local cultures. You can use resource files (.resx) to store your strings in the various languages you want to support. I would check out this link:
http://msdn.microsoft.com/en-us/library/c6zyy3s9.aspx

searching in large amount of info in a single file on iphone

I wanna store a list of people while each person has some pieces of info associated with him. for example location and phone number and e-mail address.
i wanna store in this list around 10,000 persons.
After that i want to search this list dynamically (after typing each letter , the database is searched for new matches to the string written in the search box)
[if there is a scientific name for this search process , let me know it please :) ]
My Question is What do you think i should use in my implementation for best performance?
SQLite,
XML, plist
???
and is there any tutorial about this kind of search ?
Thanks in advance
You should definitely be using SQLite for this, and using the CoreData abstraction layer would probably be a good ideas as well unless you are already a pro at SQLite calls. The documentation for Core Data would be a good place to start on how to do this. Apple provides several examples that are similar to what you are doing.
You should use a database for this. Searching in a database is a lot quicker than searching in a file. Not quite sure how much memory it would take but it might even be possible to load it all in memory if it is just a list of names. That is how it would be done on a desktop application for sure, but might not work on an iPhone which has a lot less memory.
SQLite for the win!

Working with an application written in a foreign (spoken) language

I have a VB5 application written in a foreign language (Italian). It uses an Access DB which is also in Italian.
How can I convert this to English?
I am possibly going to port this to .NET, but before I do I need to somehow read and understand what I am doing.
I wouldn't spend time or money trying to actually translate the source. Just use on-line automatic translators like google translate to look up snippets of Italian you don't understand. Comments and identifiers in source code are not complex literary works. It shouldn't take you long to grok the "programming Italian" subset of Italian.