Repository navigation
Feature/finnish UI - #156
Merged
Merged
Conversation
Add a Finnish string table and wire the FI language into the config enum, string lookup, language cycle and settings label. The existing JetBrains Mono font subsets already cover Ä/Ö, so no font regeneration is needed; the translation avoids Å/å, which the fonts do not contain. Include Finnish in the Latin glyph coverage check and README language list. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
"LÄMPENEE" read as a temperature change and could look like a fault. Use "KÄYNNISTYY" for the warmup label on the VOC, NOx, HCHO and CO cards; it fits the 120 px label on one line. Match the VOC and NOx help texts to the English "Blue indicator = sensor warming up." wording with "anturi on käynnistysvaiheessa". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Add short comments to the Finnish string table: 'Index' is kept for UnitIndex and 'VALIKKO' for the settings button because 'Indeksi' and 'ASETUKSET' do not fit their fixed-width labels. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Name hiilidioksidi before the CO₂ abbreviation, as the CO text already does for häkä, and smooth the remaining sentences: state the outdoor level as a concentration, drop the semicolon and vary the wording. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Use viihtyvyys for comfort to match lämpöviihtyvyys, replace the technical optimialue and ääriarvot with plain wording, and say lämpöolosuhteet in the closing sentence. The meaning of the English source is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text wrapped to seven lines and ran into the thresholds list, which only leaves room for six. Tighten and smooth the wording (ilmankosteus, ihannealue, fewer repeated verbs) so it fits. Shorten the Excellent line so it no longer extends under the AH and RH buttons. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text wrapped to seven lines; tighten and smooth it so it fits in six, using the same ihannealue and viihtyvyys wording as the other info pages. Use ihanteellinen on the Excellent line. Spell out the title as ABSOLUUTTINEN KOSTEUS. The AH page has no graph, and like the German and Dutch titles it wraps to two lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
ABSOLUUTTINEN KOSTEUS wraps to two lines in the sensor info title on the device, which looks broken. Restore ABSOL. KOSTEUS and note why in a short comment. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text needed a seventh line in the conservative wrap estimate. Fold the ASHRAE 55 note into one compound word so it fits in six. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text wrapped to seven lines. Join the SGP algorithm and baseline sentences and drop the self-evident higher-value sentence so it fits in six. Smooth the Uncomfortable line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text wrapped to seven lines and the Poor line ran past the right screen edge. Tighten both and smooth the other threshold lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text wrapped to seven lines. Shorten two sentences so it fits in six, and smooth the Excellent line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Replace the odd sakkoja wording with plain Finnish and rephrase the closing advice. The text still fits in six lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The earlier wording changes made the main text wrap to seven lines. Name UBA without the long agency name, as the German and Dutch texts do, and use CO₂-pitoisuus so it fits in six. Use ihanteellinen on the Excellent line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
List the sources and diseases in natural Finnish and fix the adverb ending on the Uncomfortable line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Replace the semicolon with a separate sentence, use siitepölyn palaset, and fix the adverb ending on the Uncomfortable line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text needed a seventh line in the conservative wrap estimate. Give the sentences subjects, shorten the AQI reference so it fits in six, and align the threshold lines with the PM2.5 wording. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Rephrase the most-dangerous sentence, replace the semicolon, and fix the adverb ending on the Uncomfortable line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Give the measurement sentence a subject and fix the Acceptable line, which said normal indoor air activity instead of normal indoor activity. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Name ilmanpaine explicitly, say herkille ihmisille in plain Finnish and rephrase the Excellent and Poor lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Replace paljastaa säätrendit with plain wording and fix the adverb endings on the threshold lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Fix the awkward mahdollisesti and todennäköisesti endings on the relative and absolute humidity threshold lines. The RH Acceptable line also moves further from the right screen edge. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The main text needed a seventh line in the conservative wrap estimate. Shorten the comparison and sweating sentences so it fits in six, and use the viihtyvyys and miellyttävä wording from the other pages. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Simplify the conditions wording, end with a plain purpose clause, and use vähennä instead of alenna on the Uncomfortable line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Say mahdollisia instead of todennäköisiä on the Poor line; the Finnish word sounded stronger than the English likely. Replace the clumsy Hajuja voi havaita with Hajuja saattaa esiintyä. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Split the long sentences: state the scale and then say mitä pienempi luku, sitä parempi ilma as its own sentence, and say AQI huomioi instead of arvo reagoi. Replace saastekuorma on the Uncomfortable line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Finnish saaste suggests industrial pollution, which is misleading for indoor air. Use epäpuhtaus on the AQI page and in the PM2.5 and PM4 source lists; the NOx page already says päästöt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The PM pages measure particles, so outdoor pollution reads better as ulkoilman hiukkaset than the general epäpuhtaudet. The AQI page keeps epäpuhtaus because it combines particles and gases. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Two sentences in a row started with Ne, so the reader could lose track of what they refer to. Say PM10-hiukkaset once and drop siitepöly from the source list, where the opening sentence already mentions it, to keep the text within six lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
The opening sentence read oddly; say that the shifts can affect well-being instead of listing sudden effects on it. Say mahdollisia instead of todennäköisiä on the Poor line, as on the VOC page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Say mahdollisia instead of todennäköisiä, matching the 3-hour pressure and VOC pages. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Use mahdollinen on the middle threshold; the line already states the dryness or mugginess, so todennäköinen read stronger than needed. The Poor lines keep todennäköisiä, where the English likely is warranted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Say mahdollisia for the respiratory and skin symptoms. The relative humidity Poor line keeps todennäköisiä because it also covers mold growth, as does the mold risk page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
|
All contributors have signed the Project Aura CLA. |
Contributor
Author
|
I have read and agree to the Project Aura Individual Contributor License Agreement v2.0, and I hereby sign it. |
Finnish readers know häkä, hiilidioksidi and formaldehydi better than the CO, CO2 and HCHO abbreviations, so lead with the word and keep the abbreviation in brackets. The longest line is 47 of the roughly 50 characters that fit beside the settings button, and the messages keep plain CO2 because the subscript glyph is missing from the 14 px font. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Häkävaroitin is the established Finnish word for a CO alarm. The line would exceed the space beside the settings button with the abbreviation, so drop it here; the other two CO messages still carry it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Häkää (CO) koholla read awkwardly. Häkäpitoisuus koholla is plain Finnish and sits between the detected and danger messages, matching the English elevated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
All three messages now name häkä and carry (CO). The detected line uses a comma so häkävaroitin still fits the 50 characters available beside the settings button. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
Kosketus: is 99 px wide but the value starts 71 px after the label, so the two overlapped on screen, and the word does not work in this technical context. Keep the English word and note why in a comment. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0144uinNbUzZTQeatuAk9ei3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds Finnish as UI language on the device. The new
FIvalue is wired into the config enum, the string lookup, the language cycle and the settings label, and Finnish is included in the Latin glyph coverage check and the README language list.src/ui/strings/UiStrings.fi.inc— new, 340 stringssrc/config/AppConfig.h,src/ui/UiStrings.cpp,src/ui/UiLocalization.cpp— language wiringtools/check_ui_font_coverage.py,README.md— include FinnishNo font regeneration is needed: the existing JetBrains Mono subsets already cover Ä and Ö, and the translation avoids Å/å, which the fonts do not contain.
Fitting the fixed-size labels
Finnish words are long, so several strings are written to fit the EEZ layout rather than translated literally. Every sensor info page was checked against
screens.c: the body text must stay within six lines of the 760 px label before the threshold list, and threshold lines must not run under the tab buttons or past the right screen edge.Two places where the Finnish word does not fit have a short comment in the string table explaining the choice:
VALIKKO;ASETUKSETis clippedIndex;Indeksiwraps. The other Latin-script locales keepIndexas wellOut of scope
While reviewing the UI I found strings that no language can translate, because they are hardcoded in
screens.cor built in C++: the GRAPH, LOGS and UNITS buttons, theLOG:andLANGUAGE:titles, and the optional gas page inUiOptionalGasProfile.cpp.This PR is strictly "translation only".
Checklist