Comments (3)
I'm guessing it's
from js-lingui.
I narrowed it, the bug seems to occur only when the translation starts with #
followed by variable.
EDIT: found more test cases that fail
It seems to happen whenever #
is tokenized by itself (I think it only happens when it's next to a variable)
Here's a test case for i18n.test.ts
:
it("._ should not bug when with #", () => {
const messages = {
Bad: "#{standing} in leaderboard",
BadToo: "leaderboard standing is {standing}#",
BadTooToo: "your id is {name}#{tag}",
Good: "# standing in leaderboard",
GoodToo: "standing is #{standing} in leaderboard",
GoodTooToo: "leaderboard standing is #{standing}",
}
const i18n = setupI18n({
locale: "en",
messages: { en: messages },
})
expect(i18n._({ id: "Bad", values: { standing: 7 } })).toEqual(
"#7 in leaderboard"
)
expect(i18n._({ id: "BadToo", values: { standing: 7 } })).toEqual(
"leaderboard standing is 7#"
)
expect(
i18n._({ id: "BadTooToo", values: { name: "hey", tag: "you" } })
).toEqual("your id is hey#you")
expect(i18n._({ id: "Good", values: { standing: 7 } })).toEqual(
"# standing in leaderboard"
)
expect(i18n._({ id: "GoodToo", values: { standing: 7 } })).toEqual(
"standing is #7 in leaderboard"
)
expect(i18n._({ id: "GoodTooToo", values: { standing: 7 } })).toEqual(
"leaderboard standing is #7"
)
})
from js-lingui.
it seems there is an issue in message format parser, it shouldn't treat '#' symbol as octothorpe outside { }
expressions. Anyway, thanks for digging it and fixing.
from js-lingui.
Related Issues (20)
- Support Gatsby HOT 2
- Cannot find type definition file for './node_modules/@lingui/macro/global'. HOT 2
- Next.js tutorial HOT 3
- The `catalogsMergePath` option is missing in the documentation
- Support backup messages HOT 5
- Extract removes manual comments from po files HOT 1
- React Fragment (`<>`) inside `<Plural>` is not working HOT 5
- Impossible to use with Vite? HOT 1
- definePlural macro HOT 4
- rspack now supports wasm plugins, lingui integration example could be improved HOT 3
- Escaped curly-braces doesn't preserve in development mode HOT 1
- <Trans> breaks React JSX semantics with regards to booleans HOT 3
- Consider renaming of the macro components HOT 3
- selectOrdinal error HOT 2
- Lingui CLI extraction puts msgid as msgstr HOT 3
- i18n._(id) throws error if id param passed as undefined
- Setup with webpack
- Order by is not alphabetically HOT 1
- t`` macro doesn't work when load and activate message HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-lingui.