Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[iOS] Internationalization Infrastructure #106

Open
2 tasks done
marcotuts opened this issue Oct 12, 2023 · 6 comments
Open
2 tasks done

[iOS] Internationalization Infrastructure #106

marcotuts opened this issue Oct 12, 2023 · 6 comments
Assignees
Labels
epic Large unit of work, consisting of multiple tasks

Comments

@marcotuts
Copy link

marcotuts commented Oct 12, 2023

Goal

Coming soon

Slack: #wg-product-mobile
Requirement Definition: coming soon

Tasks

  1. e0d
@marcotuts marcotuts changed the title Internationalization Infrastructure Internationalization Infrastructure [Mobile] [iOS] Oct 12, 2023
@marcotuts marcotuts added the epic Large unit of work, consisting of multiple tasks label Oct 12, 2023
@marcotuts
Copy link
Author

Candidate for edX development and support given existing context

@moiz994
Copy link

moiz994 commented Nov 1, 2023

Goal: Have the app support multiple languages to increase ease of use for learners from a variety of geographical regions.

The current prod edX app supports 11 different languages (including English).

@nizmaylova nizmaylova changed the title Internationalization Infrastructure [Mobile] [iOS] [iOS] Internationalization Infrastructure Nov 16, 2023
@moiz994
Copy link

moiz994 commented Dec 6, 2023

@e0d and @marcotuts fyi:

We support a total of 11 languages in our app:

  • Arabic
  • Chinese
  • English
  • French
  • German
  • Hebrew
  • Japanese
  • Portugese
  • Spanish
  • Turkish
  • Vietnamese

@brian-smith-tcril
Copy link

I believe the best path forward for internationalizing the iOS and Android apps is to follow the patterns established by OEP-58.

This would mean:

I believe having the iOS and Android repos follow the same pattern for translations management as the rest of the repos in the Open edX GitHub organization will benefit maintainability. Following a consistent pattern for the translations workflow will make it much easier for anyone working with internationalization to understand.

This proposal does not directly address the concerns surrounding duplicated strings. While I understand the desire to deduplicate, I feel doing so in a way that only applies to the iOS and Android repos is less than ideal. Transifex provides tools to aid with this such as Translation Memory, and I believe we should utilize that before looking into adding complexity in service of deduplication.

@OmarIthawi
Copy link
Member

OmarIthawi commented Jan 12, 2024

Hello there.

I've been asked by the Axim team to review how can we extend the openedx-atlas and https://github.com/openedx/openedx-translations to be used in the mobile apps.

I've worked on openedx-atlas and we've made sure to make it cross-platform compatible with no external dependencies except for Bash.

I'm not an iOS expert and I'll be asking a colleague to work on this. So, please let me know if I've missed anything regarding the build process in iOS.

I've checked the code and noticed that strings are already extracted as part of the development process but they're not grouped.

Transifex and Translators likewise makes prefers to group the translations files to avoid confusion. We've initiated a similar effort in the edx-platform:

To illustrate the point, the edx-ios-app (old one) has more than one resource:

Same goes for the edx-app-android which admittedly has much more string resource files:

Is it doable to combine those resources into one resource before pushing it to Transifex? This would make it easier for translators to find and translate the resources? We have 54 resources already in the Open edX project and we'd like to keep in general 1 resource per application.

My suggestion to that solution is to write a build script to combine the source translations in a file to be sent to Transifex, then on pulling the translations the file is split based on the source Source/en.lproj/*.strings file so the structure is kept and the mobile apps code won't need editing.

The choice of the build script language can be any of Bash, Swift or Ruby depending on the iOS team preference. We could address the duplication issue during this process if needed -- but that'll extend the development scope a bit.

A release-time script needs to be created to pull the latest translations from the openedx/openedx-translations repository via the atlas pull command.

As far as I understand, the workflow is somewhat similar to Android.

So overall here's the ideal workflow would look like:

I'm happy to schedule a call to discuss the plan and get your feedback. We've implemented similar steps for projects with different tech-stacks and we believe it's suitable for beneficial for mobile.

@OmarIthawi
Copy link
Member

Being fixed by #422

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic Large unit of work, consisting of multiple tasks
Projects
Status: In Development
Development

No branches or pull requests

5 participants