Date: February 24, 2026
Branch base: main
Total scope: ~3,460 string changes across 19 PRs (18 done, 1 remaining)
Prerequisite: Lingui v5 infrastructure already deployed (PR #19175)
Unified plan synthesized from two independent research efforts and framework documentation research. Date: 2026-02-08
Migrate the Harvey frontend from i18next (runtime JSON loading via HTTP backend) to Lingui v5 (compile-time PO catalogs via Vite plugin). The migration covers the main app, Word Add-In, and Outlook Add-In. It is phased into atomic PRs grouped by product area for reviewability.
| // Use Gists to store code you would like to remember later on | |
| console.log(window); // log the "window" object to the console |
| // | |
| // TNPageViewController.m | |
| // The News | |
| // | |
| // Created by Tosin Afolabi on 26/06/2014. | |
| // Copyright (c) 2014 Tosin Afolabi. All rights reserved. | |
| // | |
| #import "TNPageViewController.h" |
| - (void)shareAction | |
| { | |
| NSArray *activityItems = @[self.url, self.titleLabel.text]; | |
| UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; | |
| [self presentViewController:activityViewController animated:true completion:nil]; | |
| } |
I decided to build an iOS app for my University's bus service that runs through the various campuses.
It was an interesting challenge as I had nothing but the printed timetables (http://www.nottingham.ac.uk/about/documents/903-times.pdf) to use as the data.
Thus I had to come with a suitable data structure that would complement the design & user experience i had in mind for the app.
I also decided to take the challenge of writing the app in swift. This project has helped me get to up speed with swift really quickly.
I released TheNews iOS (bit.ly/thenews-ios) over the past summer. A required part of the app was to communicate with the designer news api. The api had only just been recently released so there was no wrapper for iOS apps.
As such, I had to create an API wrapper. Having never attempted this before, I studied a few examples on Github and modeled my solution like those I had seen.
It was a really interesting project to build. It's important to create the wrapper as a singleton to maintain a user session & prevent multiple calls of the same requests. I also built the wrapper with the consideration that others might find it useful (https://github.com/TosinAF/DNManager) .
As such I had to consider what methods should be public and make them easy for anyone to get familiar with it.
I leveraged the power of the AFNetworking Library to build the api wrapper & used blocks so as to allow the user to specify what actions should be taken if the request succeeds or if it fails.
| extension NSDate { | |
| class func isSaturday() -> Bool { | |
| if NSDate.getDay() == 7 { return true } | |
| return false | |
| } | |
| class func isSunday() -> Bool { | |
| if NSDate.getDay() == 1 { return true } | |
| return false |
| // | |
| // PEExcuseViewController.m | |
| // Procuses | |
| // | |
| // Created by Tosin Afolabi on 09/11/2013. | |
| // Copyright (c) 2013 Tosin Afolabi. All rights reserved. | |
| // | |
| #import <Parse/Parse.h> |
