Personal names around the world explains the complication of names. The biggest take away: ask users for their full name and short name. Don’t try and parse out first names or separate first and last into separate fields.
I’ve been listening to The History of English Podcast. It’s not easy to binge but it’s a mainstay in my weekly podcast rotation. I’m currently around the fall of the Roman Empire. It’s fascinating that our alphabet has bounced between cultures but with only minor changes.
I believe an important part of the development process is getting a working version into the hands of others. As part of this, being able to install the latest and greatest on the fly is paramount. It took me a lot of time to find a reliable way to build, sign, and distribute apps as part of this internal continuous delivery.
In an iOS app, localization can be especially difficult when dealing with attributed strings. Fairly often, designers request something like:
Searching for burgers in SOMA, San Francisco, CA:
The golden rule of localized strings is to treat them as atomic units:
- Never concatenate strings to form sentences. Many languages have different sentence structure or gender rules than English and you cannot just substitute a single word or phrase in for any other.
Often these complexities are cited as reasons to avoid localization. But, unless you have geographic constraints, you will find a substantially larger audience with a localized application.
ZSWTappableLabel makes links inside your attributed strings tappable, as the name suggests. It’s a UILabel subclass which does not do any drawing itself, making it fast and easy.
ZSWTaggedString is the powerhouse. It transforms an HTML-like syntax into an attributed string. You can read more about the syntax and advanced usage on its GitHub page, but here’s how you might use it for the examples above:
In my experience, localizers1 are familiar enough with HTML to have no issues with localizing these strings. By marking the regions you intend to be visually distinct, they can more easily understand your intent, producing better localizations.
While on the subject, here are a few best practices for localization in iOS:
- To handle the current locale changing, or the dynamic type setting changing, reload your UI when observing:
- To represent dates, durations, distances, lengths, etc., use an appropriate formatter.
- To create your own date formats, use
+dateFormatFromTemplate:options:locale:on NSDateFormatter. Remember that these need recreating if the locale changes.
- To combine a first and last name, use
ABPersonGetCompositeNameFormatForRecordwith a temporary
ABPersonRef, or use the new
- For sending non-user-facing data to a server, use
en_US_POSIXas your locale.
When T-Mobile entered the wireless scene as the “Uncarrier” I was impressed. Their greatest contribution to the carrier ecosystem is consistently adding features, forcing other carriers to keep up. Instead of rationed text and voice, we’re in a world where data is king.
However, if you are considering T-Mobile service, I suggest reconsidering. The plans and features look appetizing, but their execution leaves a lot to be desired. I would not count on their unique features; just the now-basics with worse coverage.
I wrote off my initial experiences as anecdotal, but it became cumulatively enough for me to leave their service.
These are instructions to configure a U-verse gateway to send all of its incoming traffic to your own router without impacting its normal networking services.
I filter a lot of email at work, and got into a really hellish game battling hierarchical labels. To restore myself to sanity, and to corral them into some sort of system, required inspiration: IRC. Specifically, the prefixes used on its channels (chat rooms). These prefixes vary from most important to least, and they sort in the following order as well.