Comments (8)
@DmitryEfimenko I rewrote it from scratch, the new implementation will be:
export function getLangFn({ cachedLang, browserLang, cultureLang, defaultLang }) {
return whatYouWant;
}
@NgModule({
imports: [
TranslocoPersistLangModule.init({
getLangFn,
storage: {
provide: TRANSLOCO_PERSIST_LANG_STROAGE,
useValue: localStorage
},
})
],
})
class AppModule {}
We'll also expose the cookieStorage
. If you don't provide a getLangFn
function it will take cachedLang || defaultLang
.
from transloco.
Hey @DmitryEfimenko,
After reconsidering this feature, we have decided not to implement it as part of the library, as we try to keep it as clean and simple as possible.
Also implementing this feature is pretty easy and doesn't require a lot of code:
constructor(private transloco: TranslocoService) {}
ngOnInit() {
// set the saved language from local storage.
this.transloco.setActiveLang(localStorage.getItem('lang'));
// persist the current language in local storage.
this.transloco.langChanges$.pipe(distinctUntilChanged())
.subscribe(lang => localStorage.setItem('lang', lang));
}
Does it satisfy your issue?
from transloco.
@DmitryEfimenko It's on its way 🙂
we are planning to start work next week.
from transloco.
@agugan Hey, we are working on something and a PR should be ready soon, you are welcome to track this 🙂
from transloco.
@DmitryEfimenko could you check if the following PR resolved this issue, please?
https://github.com/ngneat/transloco/pull/34/files
Feel free to suggest changes based on your experience and needs.
from transloco.
@shaharkazaz
I am not sure whether this is incorporated in the planning or already exists. But I would also like to add a sub feature to it.
Our enterprise applications have multiple sub-projects to switch between. Sometimes we have language selection coming in from different source than the rest of project.
Currently we have to store the selected language in cookie/LS and retrieve it the respective translation module initialization.
Future: I would like to see it integrated to translation store itself.
Ex:
{
provide: TRANSLOCO_CONFIG,
useValue: {
prodMode: environment.production,
listenToLangChange: true,
defaultLang: 'en',
persistLanguage: {
persistLanguageAcross: true,
name: 'selected_lanaguage_transloco'
}
}
}
So when these options enabled, we will store the selected language also in cookie/Local/Session storage under the given name, and then we can first check for the persisted language in sub-projects else fallback to defaultLanguage.
Though this look like a specific usecase, but its also one of the bigger pain points in translations.
If you like this feature, I would love to submit a PR with help.
from transloco.
it's trivial to save it to the localStorage
. It becomes more involved when saving it to the cookie which is a valid use-case if you want to have it working with SSR.
If worrying about the library size, make it a separate addon library just like in the case of ngx-translate-cache, which is separate from ngx-translate. It does not need to be a part of the transloco library itself.
As a matter of fact, a lot of the implementation could be straight copy-pasted from ngx-translate-cache.
from transloco.
That looks clean!
from transloco.
Related Issues (20)
- ng-add Path "undefined" does not exist HOT 14
- Docs for unit tests, broken links HOT 3
- Chore: 🤖 upgrade to angular v17 HOT 10
- Feature(transloco): allow option to disable loading language files at root i18n level
- Bug(tranloco): provideTranslocoTranspiler does not work with FunctionalTranspiler HOT 1
- Bug(transloco): Multiple languages on the application simultaneously with pipe HOT 4
- Bug(transloco-optimize): Translation broken in production HOT 4
- Feature(transloco): use fallback language for resolving referenced keys
- Bug(scope): inflight 1.0.6 dependency has security issue.
- Bug(scope): Unit tests failing with standalone components
- Bug(scope): scoped extractions prefixed not working HOT 3
- Bug(scope): Error when trying to load MFE within host using module federation (unless giving the same setup in host) HOT 1
- Proper changelogs... HOT 2
- Bug(scope): logging "missing translation key" when ssr is enabled HOT 1
- Feature(Docs): Another way for preloading languages to discuss
- Feature(transloco|transloco-locale): Provide complete type definitions for pipes used in strict mode HOT 1
- Can't add Transloco to a project: collection.json does not exist HOT 8
- When I call setActiveLang it trigger CD?
- Feature(scope): Add dateRange pipe
- Can't bind to 'translocoPrefix' since it isn't a known property of 'ng-container' (used in the '_FooComponent' component template). 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 transloco.