Comments (5)
Kind of related feature that might be interesting. In a very large project, having all of the copy in one place becomes challenging. Right now (I could be wrong) the setup forces a structure like:
src/notifications/published.ts
src/i18n/translations/en/published_copy.ts
src/i18n/translations/de/published_copy.ts
whereas something like this, allowing the copy to be colocated with the component/function could be very helpful to avoid jumping around in the codebase:
src/notifications/published.ts
src/notifications/published_copy.ts (perhaps with sub-exports like export const en = { } )
from typesafe-i18n.
I'm not sure if I got it correct.
You can do that already, but you would need to import these objects inside the src/i18n/[locale]/index.ts
file.
To simplify the generator, it uses the index.ts
file's default export as the entry point to all your locales. What you then do inside that file is up to you. You can import anything that lays inside the root of your project.
You can have a file src/notifications/published.ts
that exports part of a dictionary in multiple languages like
export const notifications_en = {
prop1: 'This is a test'
}
export const notifications_de = {
prop1: 'Das ist ein test'
}
and then reference it inside src/i18n/en/index.ts
like
import { notifications_en } from 'src/notifications/published.ts'
const en: BaseTranslation = {
...notifications_en
}
export default en
and inside src/i18n/de/index.ts
like
import { notifications_de } from 'src/notifications/published.ts'
const de: Translation = {
...notifications_de
}
export default de
Is this what you want?
from typesafe-i18n.
@mullwaden did you see my comment above?
from typesafe-i18n.
yes! I ended up putting everything in the translations folder though. It works better with the automatic updates of the types.
One idea would be to go the route that jest, storybook and less go, where they automatically pick up files, e.g.
myClass.ts
myClass.test.ts
Imagine then you could do something like
import translation from "./myClass.translation";
const title = translation.en.title();
It can be done, but it would require some interesting webpack shenanigans... In fact you could probably at that point entirely hide the types file and make it part of the regular build process.
from typesafe-i18n.
@mullwaden sounds interesting. Pleas open a discussion
with some more details. Maybe it is a topic for the future.
from typesafe-i18n.
Related Issues (20)
- Calling setLocale after loadNamespaceAsync does not change LL
- [typesafe-i18n] ERROR: Unsupported package manager. HOT 1
- Plural rules not working properly with specific numbers. HOT 1
- Namespaces: Maximum call stack size exceeded HOT 1
- React Docs Don't Match the React Example
- typesafe-i18n is UNMAINTAINED - Ivan Hofer passed away HOT 30
- Using `extendDictionary` does not work well with nested namespaces. HOT 2
- Translations which are displayed using @html are missing
- Not Updated to Support Latest Expo HOT 1
- Sveltkit is using shared global store server-side (SSR) HOT 2
- Argument with custom type is not passed to the formatter function HOT 2
- Vue: namespace not being loaded
- Client rendered translation parent empty object (SvelteKit - Node)
- Feature request: exhaustive plural syntax
- generator outputs weird comments in i18n-types.ts RootTranslation
- error TS1479: The current file is a CommonJS module whose imports will produce 'require' calls HOT 3
- TypeError: Cannot convert argument to a ByteString because the character at index 12 has a value of 1506 which is greater than 255.
- no error or warning when we forgot to suffix parenthesis
- Add Bun and BunX Support HOT 1
- Rest in Peace (Author of this library has passed away) HOT 1
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 typesafe-i18n.