Skip to content

[Bug]: Turkish has % issues on Homepage #28412

@DostoevskysPiano

Description

@DostoevskysPiano

Describe the bug

The copy for turkish isn't being picked up with RegEx. We should fix this

Expected behavior

% should render without that extra copy. Per Cursor:

Turkish often writes the percent sign before the number (e.g. %10), without a space. Your Turkish strings follow that in locales/languages/tr.json, for example:

"percentage_bonus": "%{{percentage}} bonus"
Similar patterns for other bonus strings.
So the % before {{percentage}} is intentional for locale-appropriate wording, not a random bug.

Why you see [missing %{{percentage}} value]
The app uses react-native-i18n, which relies on i18n-js. Interpolation is driven by a single placeholder regex that supports both {{name}} and %{name}:

i18n.js
Lines 182-183
    // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.
    , placeholder: /(?:\{\{|%\{)(.*?)(?:\}\}?)/gm
For a string like %{{percentage}}:

The engine matches %{ first (the % plus the first {).
The captured name is everything until the next closing } — which becomes {percentage, not percentage.
There is no option named {percentage, so missingPlaceholder runs and you get text like [missing … value] (the exact substring depends on how much of the pattern matched).
So the broken line is not because Turkish "renders % wrong"; it is because % immediately before {{…}} is parsed as the start of %{…}, which clashes with the double-brace style used everywhere else.

English keeps the safe shape {{percentage}}%, so it never hits this.

Why other percentages look "English" (-0.06%)
Those values usually come from number/percent formatting (e.g. Intl, shared components, or non-translated numeric UI), which may still use suffix % and . as the decimal separator depending on locale configuration and data source. That is separate from the bonus copy that uses %{{percentage}} in tr.json.

Fix direction (for when you implement it): avoid the sequence %{{ in Turkish strings — for example put a space or a narrow no-break space between % and {{percentage}}, use {{percentage}} with % in a separate fragment, or use the %{percentage} form consistently if the project standardizes on that. I'm in Ask mode so I can't edit the repo; in Agent mode you could apply one of those patterns across the affected tr.json keys.

**Screenshots/Recordings**

![Image](https://github.com/user-attachments/assets/3452bbb0-a8d6-4c2f-9b0d-d99c201e8abc)

**Steps to reproduce**

N/A

**Error messages or log output**

```shell

Where was this bug found?

Live version (from official store)

Version

7.73

Build number

N/A

Build type

None

Device

iPhone Max Pro 13

Operating system

iOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    INVALID-ISSUE-TEMPLATEIssue's body doesn't match any issue template.Sev2-normalAn issue that may lead to users misunderstanding some limited risks they are takingauto-fixregression-prod-*Regression bug that was found in production in release *release-7.88.0Issue or pull request that will be included in release 7.88.0team-mobile-uxMobile UX teamtype-bugSomething isn't working

    Type

    No fields configured for Bug.

    Projects

    Status

    To be triaged

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions