Bug 1092387 (iosl10n)

[META] IOS-7 - L10N - Support localization into a core set of languages (EFIGS)

RESOLVED FIXED

Status

()

P5
normal
RESOLVED FIXED
4 years ago
3 years ago

People

(Reporter: bnicholson, Assigned: st3fan)

Tracking

(Depends on: 1 bug)

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

4 years ago
Before we can jump into all the upcoming iOS work, we need a plan for localization. Some things to figure out:
* How do we reuse strings? For instance, how could we share a string between a storyboard and code to toggle its label? Or how could we use the same string across multiple storyboards?
* What's the process for extracting strings? genstrings?
* Can/should we integrate with the same l10n tools we use for Android for localizers to use? What format must be the strings files be in to use those tools?

After some light experimentation with different options, the most straightforward approach to me would be to exclusively use NSLocalizedString (e.g., extract strings only from code, not storyboards). This solves the reuse problem, and allows us to create our own string bundle-like class to contain all strings. Of course, this limits the usefulness of storyboards/xibs since the strings wouldn't be visible in the GUI.

Alternatively, if the team is interested in storyboards as part of the normal development process, it would useful to see a storyboard-based demo project using localizations, with the above questions answered, so we have a pattern to follow.
(Reporter)

Comment 1

4 years ago
Stefan, I think you said you were going to look into this (specifically, figuring out how to share strings between code and storyboards). Any luck?
Flags: needinfo?(sarentz)
I'd really like to get input from Axel and Jeff before we commit to a particular avenue.

I know that there are lots of tools hanging around, and it might be premature to assume that we should take the same .properties/.dtd-style approach that we use for Fennec.

So chaps: what localization mechanism, ending up in-tree (but not necessarily starting there) would work best for you?
Flags: needinfo?(l10n)
Flags: needinfo?(jbeatty)

Comment 3

4 years ago
I'll be on PTO next week, and then I'll need to get back to work and start investigating, so it's probably going to be two weeks or so 'til I can come back with something. Which might just be questions.

Keeping the needinfo around.
Summary: Add localization support to iOS apps → (ios) Add localization support to iOS apps
(Assignee)

Comment 4

4 years ago
I'd like to do a little experiment too and rediscover how localization works on iOS. Things have changed a lot since Firefox Home. We used to do things on https://localize.mozilla.org .. at least I think so .. the name Verbatim sounds familiar. I can't find the Home project there anymore though.

That said, I am strongly in favor of:

* Not fighting Apple's tools
* ... yet, integrating with the best localization tool we use at Mozilla
* Using Xcode to manage Storyboards and Xibs for visual layout as much as possible
* ... accept that a likely a *very* small subset of strings may be duplicated and just live with that

I think it will be a mistake to already give up on Storyboards or Xibs completely just based on a possible duplicate strings issue.

(I would rather see us find a balance between those things that absolutely need to be done in code while keeping most high level views in Xibs. It will allow us to more easily design, including for Size Classes and to let the whole team participate in the design process except just those of us who know how to code.)
Flags: needinfo?(sarentz)
While it may not have much overlap with l10n, I do like the idea Brian mentioned about doing more of the UI creation in code. He mentioned a DSL called Masonry that allowed more of the UI constraint logic to be expressed in code rather than through storyboards. I like being able to look at code and understand it, without needing to fire up an IDE and open the right panels.

Comment 6

4 years ago
Stefan, do you have pointers to docs to read when I'm back?

Comment 7

4 years ago
Flagging a needinfo for Stefan exlicitly, it'd be great if you had recommended docs to read for someone that never ever did anything iOS related.
Flags: needinfo?(l10n) → needinfo?(sarentz)
(Assignee)

Comment 8

4 years ago
Hi Axel, this is probably a good starting point:

https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/Introduction/Introduction.html
Flags: needinfo?(sarentz)
Group: mozilla-employee-confidential
Component: General → General
Product: Firefox for Android → Firefox for iOS
Version: Trunk → unspecified
(Assignee)

Comment 9

4 years ago
Assigning this to myself. This does not have the highest priotity at the moment but I am working on figuring out all the steps involved to make this as smooth as possible.

Initial notes are in https://github.com/st3fan/LocalizationTest/blob/master/README.md
Assignee: nobody → sarentz
(In reply to Stefan Arentz [:st3fan] from comment #9)
> Initial notes are in
> https://github.com/st3fan/LocalizationTest/blob/master/README.md

Please allow localizing via vcs and don't force verbatim/localize.mozilla.org, pretty please.
Stefan: locamotion.mozilla.org is the Pootle platform used for localization. Verbatim is used for web content.

Many teams use Pootle as their primary translation tool. Some edit native source files they clone from vcs, but the number of those teams working in that fashion is in decline. More and more are moving toward localization tools that enable collaborative work, translation memory, terminology management, and other features. That being said, we will need to accommodate both workflows for the l10n teams to actively participate.

Could you go into more detail about your objections to Pootle for this project?
Flags: needinfo?(jbeatty)
(In reply to Stefan Plewako [:stef] from comment #10)
> (In reply to Stefan Arentz [:st3fan] from comment #9)
> > Initial notes are in
> > https://github.com/st3fan/LocalizationTest/blob/master/README.md
> 
> Please allow localizing via vcs and don't force
> verbatim/localize.mozilla.org, pretty please.

(In reply to Jeff Beatty [:gueroJeff] from comment #11)
> Stefan: locamotion.mozilla.org is the Pootle platform used for localization.
> Verbatim is used for web content.

localize.mozilla.org is explicitly mentioned in initial notes

> Could you go into more detail about your objections to Pootle for this
> project?

I don't think it is the right place to discuss l10n tools pros and cons and I'm not objecting Pootle or any other tool. I'm objecting personal views as a base to force one tool (esp without proper discussion) - ie for pl, the tool that enables collaborative work, translation memory, terminology management, and other features is vcs.
(In reply to Stefan Plewako [:stef] from comment #12)
> (In reply to Stefan Plewako [:stef] from comment #10)
> > (In reply to Stefan Arentz [:st3fan] from comment #9)
> > > Initial notes are in
> > > https://github.com/st3fan/LocalizationTest/blob/master/README.md
> > 
> > Please allow localizing via vcs and don't force
> > verbatim/localize.mozilla.org, pretty please.
> 
> (In reply to Jeff Beatty [:gueroJeff] from comment #11)
> > Stefan: locamotion.mozilla.org is the Pootle platform used for localization.
> > Verbatim is used for web content.
> 
> localize.mozilla.org is explicitly mentioned in initial notes
> 
> > Could you go into more detail about your objections to Pootle for this
> > project?
> 
> I don't think it is the right place to discuss l10n tools pros and cons and
> I'm not objecting Pootle or any other tool. I'm objecting personal views as
> a base to force one tool (esp without proper discussion) - ie for pl, the
> tool that enables collaborative work, translation memory, terminology
> management, and other features is vcs.

We'll continue the policy of keeping toolchains and workflows open.
Summary: (ios) Add localization support to iOS apps → [META] IOS-7 - L10N - Support localization into a core set of languages (EFIGS)
Duplicate of this bug: 1130499
No longer blocks: 1092348
Priority: -- → P5
(Assignee)

Updated

4 years ago
Depends on: 1135875
(Assignee)

Updated

4 years ago
Depends on: 1136215
(Assignee)

Updated

4 years ago
Depends on: 1136216
(Assignee)

Updated

4 years ago
Depends on: 1136218
(Assignee)

Updated

4 years ago
Depends on: 1136220
(Assignee)

Updated

4 years ago
Alias: iosl10n
(Assignee)

Updated

4 years ago
Depends on: 1140005
(Assignee)

Updated

4 years ago
Depends on: 1140007
(Assignee)

Updated

4 years ago
Depends on: 1140010
(Assignee)

Updated

4 years ago
Depends on: 1140011
(Assignee)

Updated

4 years ago
Depends on: 1140022
(Assignee)

Updated

4 years ago
Depends on: 1140025
(Assignee)

Updated

4 years ago
Depends on: 1140493
Depends on: 1140560
Depends on: 1146356
(Assignee)

Updated

4 years ago
Depends on: 1152336
(Assignee)

Updated

4 years ago
Depends on: 1152340
Depends on: 1151995
Depends on: 1153157

Updated

4 years ago
Depends on: 1153310

Updated

4 years ago
Depends on: 1153333
(Assignee)

Updated

4 years ago
Depends on: 1153846
Depends on: 1157241
Depends on: 1157246
Depends on: 1157251
Depends on: 1160467
(Assignee)

Updated

4 years ago
Depends on: 1162510
Depends on: 1163151

Updated

4 years ago
Depends on: 1164604
(Assignee)

Updated

3 years ago
Depends on: 1168537
(Assignee)

Updated

3 years ago
Depends on: 1168541
(Assignee)

Updated

3 years ago
Depends on: 1173015

Updated

3 years ago
Depends on: 1175887
Depends on: 1175897

Updated

3 years ago
Status: NEW → RESOLVED
Last Resolved: 3 years ago
Resolution: --- → FIXED
(Assignee)

Updated

3 years ago
Depends on: 1179863

Updated

3 years ago
Depends on: 1181777
Depends on: 1187360

Updated

3 years ago
Depends on: 1188366

Updated

3 years ago
Depends on: 1191974

Updated

3 years ago
Depends on: 1194380

Updated

3 years ago
Depends on: 1183809

Updated

3 years ago
Depends on: 1201102
(Assignee)

Updated

3 years ago
Depends on: 1205015

Updated

3 years ago
Depends on: 1206901

Updated

3 years ago
Depends on: 1206939

Updated

3 years ago
Depends on: 1196949

Updated

3 years ago
Depends on: 1210775

Updated

3 years ago
Depends on: 1215286

Updated

3 years ago
Depends on: 1215930

Updated

3 years ago
Depends on: 1216142
(Assignee)

Updated

3 years ago
Depends on: 1254223
You need to log in before you can comment on or make changes to this bug.