# percent format symbol position wrong in tr locale

## TL;DR

Fixes percent formatting where the % sign sits on the wrong side for Turkish. Use Intl.NumberFormat with the tr locale instead of string concatenation. Use when % appears before the number in Turkish UI. Not for wrong percent values.

## The error

```text
Turkish UI shows the percent sign before the number, which is wrong for the tr locale.
```

## Fix it

### Step 1: Find the formatting call

```bash
grep -rn "percent" src --include=*.ts | head -5
```

Expected: You find the manual percent concatenation.

### Step 2: Format with the Turkish locale

```bash
node -e "console.log(new Intl.NumberFormat('tr-TR', {style:'percent'}).format(0.5))"
```

Expected: You see the correctly placed percent sign for Turkish.

### Step 3: Swap the call site and re-render

```bash
node -e "console.log('replace concatenation with the formatter, confirm the sign position')"
```

Expected: The percent renders in the Turkish position.

## When to use this

- The percent sign is on the wrong side for a locale
- Percent strings are built by concatenation

## When NOT to use this

- The percent value is wrong, check the math
- The sign is right but spacing is off, check the locale data

## Tool and version compatibility

- Intl.NumberFormat in all modern runtimes
- ECMA-402

## Variant phrasings

### wrong in several locales

Concatenation is wrong everywhere except en. Replace all of them with the formatter.

### correct in Chrome but wrong in Safari

Older Safari ships stale locale data. Update or polyfill.

## Why it happens

Percent sign placement is locale data, not universal. Turkish puts the sign after the number with no space in common usage; hardcoding the English position breaks every other locale.

## Edge cases

- Some locales want a non-breaking space before the sign
- Fractions of a percent need maximumFractionDigits set explicitly
- User-entered percents need parsing with the same locale, not the display format

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_FD8q6Zoub9pId4CcvCt2Pw
