Skip to content

Commit feaca04

Browse files
committed
add translation and remote control faqs
1 parent 3d04dfb commit feaca04

12 files changed

+149
-70
lines changed

docs/faqs/app-translation.md

Lines changed: 119 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
* If you want to view your app on your phone in a different language, instructions are found at [Translated App on the Phone](#translated-app-on-the-phone).
66

7-
* If you want to help provide translations for everyone to use on their phones, please click on [Code Translation](#code-translation).
7+
* If you want to help provide translations for everyone to use on their phone with their app (*Loop*, *Trio*, or *iAPS*), please click on [Code Translation](#code-translation).
88

99
## Translated App on the Phone
1010

1111
You can select the language you want displayed for any given app in your phone settings.
1212

13-
If you have only one language on your phone, you will not see choices under the app settings. Click on the first link (for Apple instructions) to add language options to your phone.
13+
If you have only one language on your phone, you will not see choices under the app settings. Click on the link below (for Apple instructions) to add language options to your phone.
1414

1515
* [Add more than one language to your phone](https://support.apple.com/en-us/109358)
1616

@@ -29,6 +29,10 @@ If a given phrase in the app does not have a translation string in what is calle
2929

3030
For the *Loop* app and the submodules (Pumps, CGM and Services) associated with the *Loop* app, the [*lokalise*](https://app.lokalise.com/projects) website is used. You must be signed up with the *Loop* project to be able to see *Loop* translations at that site.
3131

32+
!!! note "Want to Sign Up to Translate?"
33+
To volunteer to translate, join [Loop zulipchat](https://loop.zulipchat.com/) and send a direct message to Marion Barker with your email address and the language(s) you can translate.
34+
35+
3236
## Code Translation
3337

3438
Localization (strings translated to the selected language in the app) makes use of volunteers who input translations in a special web app. Their work is then dowloaded and imported into the code used by the *Loop* app and its submodules (repositories on *GitHub*).
@@ -37,58 +41,149 @@ If you notice *Loop* app messages in English even though you selected a specific
3741

3842
Translations for Loop are performed by volunteers at [*lokalise*](https://app.lokalise.com/projects).
3943

40-
To volunteer, join [Loop zulipchat](https://loop.zulipchat.com/) and send a direct message to Marion Barker with your email address and the language(s) you can translate.
41-
42-
> If you are using the *Trio* or *iAPS* app instead of the *Loop* app, you can still assist with pump, CGM and Tidepool module localization through *Loop* *lokalise*. Some repositories from *Loop* are used by [*Trio* and *iAPS*](#what-about-other-ios-apps).
43-
44+
To volunteer, join [Loop zulipchat](https://loop.zulipchat.com/) and send a direct message to Marion Barker with your email address and the language(s) you can translate. You will get an invitation to join the project. You do not need to start a new project, start a free trial or sign up for anything special; just join the project you are invited to.
4445

46+
> If you are using the *Trio* or *iAPS* app instead of the *Loop* app, you can still assist with Pump, CGM and Tidepool module localization through *Loop* *lokalise*. Some repositories from *Loop* are used by [*Trio* and *iAPS*](#what-about-other-ios-apps).
4547
4648
### Initial Screen on *lokalise*
4749

48-
When you log in to *lokalise*, you will see a screen similar to the screenshot below where the *Loop* icon is highlighted with a red rectangle. Tap on that icon to start translating.
50+
When you log in to *lokalise*, you will see a screen similar to the screenshot below. Tap on the *Loop* icon, highlighted in the graphic with a red rectangle, to start translating.
4951

5052
![initial screen on opening lokalise](img/lokalise-initial-screen.png){width="600"}
5153
{align="center"}
5254

53-
After tapping on the *Loop* icon, you see the general translation tasks. (Your screen may look slightly different - some items may require more permissions that are standard.)
55+
After tapping on the *Loop* icon, you see the general translation tasks. (Your screen may look different.)
5456

57+
On the left are `keys` with the English language showing. On the right is the translation for that `key` in the language you selected. Each `key` has one or more words. The statistics list the total number of keys and the total number of words.
5558

56-
![initial translation screen on lokalise](img/lokalise-initial-screen.png){width="600"}
59+
![initial translation screen on lokalise](img/lokalise-initial-edit-screen.png){width="600"}
5760
{align="center"}
5861

59-
6062
### How to Find Strings to Translate
6163

62-
Typically you would search for strings that are not translated.
64+
You can search for:
65+
66+
* strings that are [not translated](#not-translated), which show up as Empty
67+
* strings in a particular [submodule](#select-a-submodule) (for example - the Pump or CGM that you use)
68+
* strings where the [English version was copied](#matches-source) to the translated field
69+
* strings where you disagree with the translation
70+
* some strings may have been automatically translated
71+
* some translations may have a typographical error
72+
73+
### Not Translated
74+
75+
Strings that have not been translated can be selected by tapping on Filter and choosing Untranslated. An example graphic is shown before choosing untranslated keys. First tap on Filter than tap on Untranslated.
76+
77+
![initial translation screen on lokalise](img/lokalise-filter-untranslated.png){width="900"}
78+
{align="center"}
79+
80+
### Enter a Translation
6381

64-
### Untransalated
82+
After tapping on an item that is empty or you want to modify, type your translation into the box on the right, where you see the words "enter translation here" in the graphic below.
6583

66-
### How to Select a Submodule
84+
![initial translation screen on lokalise](img/lokalise-selected-phrase.png){width="900"}
85+
{align="center"}
86+
87+
Notice the filename where that key is stored is indicated when you examine the details of a key. In the graphic above, the file `Loop/Loop/Localizable.xcstrings` is indicated.
88+
89+
The area under the key has a comment. This is something added in the code to explain the use of the key.
90+
91+
If a `key` does not have a translation in a given language, then when running the app, the English version is automatically provided. Do **not** tap on `Insert source`.
92+
93+
> The only reason to use `Insert source` would be if that `key` should always be identical to the English version and you want to avoid having that `key` show up when looking for untranslated keys.
94+
95+
### Select a Submodule
6796

68-
Suppose you know that you want to modify translations for the OmniBLE submodule (anything to do with the DASH pump). You can choose context as a translator in *lokalise*. The example screenshot is configured for someone translating simplified Chinese for the DanaKit pump.
97+
Suppose you know that you want to modify translations for a particular submodule (CGM, Pump or Service module). You can choose context in *lokalise*.
6998

70-
![choose a submodule for translation](img/lokalise-by-context-submodule-xcstrings.png){width="900"}
99+
* Tap on Filter
100+
* Tap on Context
101+
* Choose the submodule file
102+
* some submodules have multiple string catalogs (*.xcstrings)
103+
* some items are old enough to have a few of the older string format (*.strings)
104+
* You can ignore any file that includes "Info.plist"
105+
* those strings do not need to be translated and the keys should be configured to be hidden from translators
106+
107+
The screenshot below is configured for someone translating simplified Chinese for the DanaKit pump.
108+
109+
![choose a submodule for translation](img/lokalise-by-context-submodule-xcstrings.png){width="1024"}
71110
{align="center"}
72111

112+
#### Submodule Table for Multiple Apps
113+
114+
These submodules are used by the *Loop*, *Trio* and *iAPS* apps.
115+
116+
| Type | <div style="width:145px"></div> Name | Files |
117+
|:-:|:--|:--|
118+
| CGM | `CGMBLEKit` | CGMBLEKit/CGMBLEKit/Localizable.xcstrings<br>CGMBLEKit/CGMBLEKitUI/Localizable.xcstrings |
119+
| CGM | `G7SensorKit` | G7SensorKit/G7SensorKit/Localizable.xcstrings<br>G7SensorKit/G7SensorKitUI/Localizable.xcstrings |
120+
| CGM | `LibreTransmitter` | LibreTransmitter/LibreTransmitter/Localizable.xcstrings<br>LibreTransmitter/LibreTransmitterUI/Localizable.xcstrings |
121+
| CGM | `Dexcom Share` | dexcom-share-client-swift/ShareClient/Localizable.xcstrings<br>dexcom-share-client-swift/ShareClientUI/Localizable.xcstrings |
122+
| CGM | `NightscoutRemoteCGM` | NightscoutRemoteCGM/NightscoutRemoteCGM/Localizable.xcstrings |
123+
| Pump | `DanaKit` | DanaKit/Localization/Localizable.xcstrings |
124+
| Pump | `MedtrumKit` | MedtrumKit/Localization/Localizable.xcstrings |
125+
| Pump | `OmniBLE` | OmniBLE/Localizable.xcstrings<br>OmniBLE/OmniBLE/Localizable.xcstrings |
126+
| Pump | `RileyLinkKit` | RileyLinkKit/RileyLink/Localizable.xcstrings<br>RileyLinkKit/RileyLink/LoopKit.xcstrings<br>RileyLinkKit/RileyLinkBLEKit/Localizable.xcstrings<br>RileyLinkKit/RileyLinkKitUI/Localizable.xcstrings |
127+
| Pump | `MinimedKit` | MinimedKit/MinimedKit/Resources/Localizable.xcstrings<br>MinimedKit/MinimedKitUI/Resources/Localizable.xcstrings<br>MinimedKit/MinimedKitUI/Resources/mul.lproj/MinimedPumpManager.xcstrings|
128+
| Pump | `OmniKit` | OmniKit/Localizable.xcstrings<br>OmniKit/OmniKit/Resources/Localizable.xcstrings<br>OmniKit/OmniKitUI/Resources/Localizable.xcstrings |
129+
| Misc | `LoopKit` | LoopKit/LoopKit/Resources/Localizable.xcstrings<br>LoopKit/LoopKitUI/Resources/Localizable.xcstrings<br>LoopKit/LoopKitUI/Resources/mul.lproj/InsulinKit.xcstrings<br>LoopKit/LoopKitUI/Resources/mul.lproj/LegacyInsulinDeliveryTableViewController.xcstrings<br>LoopKit/MockKit/Resources/Localizable.xcstrings<br>LoopKit/MockKitUI/Resources/Localizable.xcstrings |
130+
| Service | `TidepoolService` | TidepoolService/TidepoolServiceKit/Localizable.xcstrings<br>TidepoolService/TidepoolServiceKitUI/Localizable.xcstrings |
131+
132+
### Matches Source
133+
134+
Some of the String Catalogs have had the English version inserted in the translation field. This was done inadvertently. To find these instances in the language you are translating, set up a custom filter.
135+
136+
First click on Filter, then Customize (see red highlights in graphic below)
137+
138+
![select a custom filter on lokalise](img/lokalise-filter-custom.png){width="900"}
139+
{align="center"}
140+
141+
The next screen allows you to choose `Translation` in one drop-down and then `matches source` in the adjacent drop-down.
142+
143+
![configure a custom filter for same as source on lokalise](img/lokalise-filter-for-matches-source.png){width="900"}
144+
{align="center"}
145+
146+
You can hit Appy or Save and Apply and give it a name so you can select the Name next time.
147+
148+
The screenshot below is after creating and naming a custom filter called `Translation Matches Source`.
149+
150+
![example using custom filter matches source on lokalise](img/lokalise-matches-source.png){width="900"}
151+
{align="center"}
152+
153+
154+
### Find a String
155+
156+
If you observe a string you want to modify, you can type it in directly. The text you type in the search box can be all or part of a string, and in English or the language you are translating.
157+
158+
![example using custom filter matches source on lokalise](img/lokalise-key-search.png){width="900"}
159+
{align="center"}
160+
161+
- - -
162+
73163
## What About Other iOS Apps
74164

75-
The *Trio* and the *iAPS* apps use code for CGM, pumps and services originally developed for the *Loop* app.
165+
The *Trio* and the *iAPS* apps use submodules for CGM, Pump and Service features originally developed for the *Loop* app. New CGM and Pump modules are coming soon or already available. These are being configured for use with all these iOS apps.
76166

77167
* The shared code originally developed for the *Loop* app resides in the *GitHub* *LoopKit* organization and is under the control of the *LoopKit* owners
78-
* The *Trio* app has always used forks for these repositories so get their localizations for the CGM, pumps and services modules from *lokalise*
79-
* The *iAPS* app initially used copies of the code - not connected to the *LoopKit* repositories - configured their own crowdin site for *iAPS* localization
168+
* The *Trio* app has always used forks for these repositories so get their localizations for the CGM, Pump and Service modules from *lokalise*
169+
* The *iAPS* app initially used copies of the code - not connected to the *LoopKit* repositories - and configured their own crowdin site for *iAPS* localization
80170
* However, as improvements to the submodules evolved at *LoopKit*, the updates needed to be hand-edited and added to the *iAPS* copies
81171
* In late 2025, *iAPS* started the transition to using forks from *LoopKit* instead of copies
82-
* Some of the *iAPS* translations were imported into *lokalise*
172+
* Some of the *iAPS* translations for CGM, Pump and Service submodules were imported into *lokalise* at this time
83173

84174
The bottom line is
85175

86176
* Submodule translations are handled at [*lokalise*](https://app.lokalise.com/)
87-
* *Trio* translations are handled at [crowdin for Trio]
177+
* *Trio* translations are handled at [crowdin for *Trio*](https://crowdin.com/project/trio/invite/public?h=48e1a77abd1611860f475c1ce17540112591650&show_welcome)
178+
* *iAPS* translations are handled at [crowdin for *iAPS*](https://crowdin.com/project/iaps)
179+
180+
You can use the *Trio* or *iAPS* discord server to volunteer to translate using *lokalise* by sending a direct message to Marion Barker if you are not a member of zulipchat.
181+
182+
- - -
183+
184+
## Adding Languages
88185

186+
We can add languages if a translator commits to take on that task.
89187

90-
* The *Trio* app and the *iAPS* apps each have their own translation sites
91-
* Both of those apps have a crowdin site configured
92-
* Initially *iAPS* used copies of some of the
188+
At lokalise, the language must be added first before translators have access it to that language. Send a DM to Marion Barker with your request for a new language.
93189

94-
You can use the *Trio* or *iAPS* discord server to volunteer by sending a direct message to Marion if you are not a member of zulipchat.
18.3 KB
Loading
9.1 KB
Loading
14.2 KB
Loading
8.81 KB
Loading
64 KB
Loading
96.3 KB
Loading
-86.8 KB
Binary file not shown.
18 KB
Loading

docs/faqs/overview-faqs.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ Map to this section:
1010
* [Omnipod FAQs](../faqs/omnipod-faqs.md)
1111
* [CGM FAQs](../faqs/cgm-faqs.md)
1212
* [Update/Rebuild Loop FAQs](../faqs/update-faqs.md)
13-
* [What if I'm Changing Phones](../faqs/update-faqs.md#what-if-im-changing-phones)
1413
* [New Phone Tips](../faqs/new-phone.md)
15-
* [RileyLink FAQs](../faqs/rileylink-faqs.md)
14+
* [Remote Control FAQs](../faqs/remote-control.md)
15+
* [Translation FAQs](../faqs/app-translation.md)
1616
* [Algorithm FAQs](../faqs/algorithm-faqs.md)
1717
* [Apple Health FAQs](../faqs/apple-health-faqs.md)
18+
* [RileyLink FAQs](../faqs/rileylink-faqs.md)
1819
* [Glossary](../faqs/glossary.md)

0 commit comments

Comments
 (0)