Browse Source

Merge pull request #10091 from abpframework/feat/8980

store current language in the cookie
pull/10100/head
Mehmet Erim 5 years ago
committed by GitHub
parent
commit
de8ad6cb6d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      npm/ng-packs/packages/core/src/lib/core.module.ts
  2. 23
      npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts
  3. 1
      npm/ng-packs/packages/core/src/lib/providers/index.ts
  4. 5
      npm/ng-packs/packages/core/src/lib/tokens/cookie-language-key.token.ts
  5. 3
      npm/ng-packs/packages/core/src/lib/tokens/index.ts

2
npm/ng-packs/packages/core/src/lib/core.module.ts

@ -32,6 +32,7 @@ import { TENANT_KEY } from './tokens/tenant-key.token';
import { noop } from './utils/common-utils';
import './utils/date-extensions';
import { getInitialData, localeInitializer } from './utils/initial-utils';
import { CookieLanguageProvider } from './providers/cookie-language.provider';
export function storageFactory(): OAuthStorage {
return oAuthStorage;
@ -131,6 +132,7 @@ export class CoreModule {
ngModule: RootCoreModule,
providers: [
LocaleProvider,
CookieLanguageProvider,
{
provide: 'CORE_OPTIONS',
useValue: options,

23
npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts

@ -0,0 +1,23 @@
import { APP_INITIALIZER, Injector, Provider } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { SessionStateService } from '../services/session-state.service';
import { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token';
export function setLanguageToCookie(injector: Injector) {
return () => {
const sessionState = injector.get(SessionStateService);
const document = injector.get(DOCUMENT);
const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);
sessionState.getLanguage$().subscribe(language => {
const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);
document.cookie = `${cookieLanguageKey}=${cookieValue}`;
});
};
}
export const CookieLanguageProvider: Provider = {
provide: APP_INITIALIZER,
useFactory: setLanguageToCookie,
deps: [Injector],
multi: true,
};

1
npm/ng-packs/packages/core/src/lib/providers/index.ts

@ -1 +1,2 @@
export * from './cookie-language.provider';
export * from './locale.provider';

5
npm/ng-packs/packages/core/src/lib/tokens/cookie-language-key.token.ts

@ -0,0 +1,5 @@
import { InjectionToken } from '@angular/core';
export const COOKIE_LANGUAGE_KEY = new InjectionToken<string>('COOKIE_LANGUAGE_KEY', {
factory: () => '.AspNetCore.Culture',
});

3
npm/ng-packs/packages/core/src/lib/tokens/index.ts

@ -1,6 +1,7 @@
export * from './app-config.token';
export * from './cookie-language-key.token';
export * from './list.token';
export * from './lodaer-delay.token';
export * from './manage-profile.token';
export * from './options.token';
export * from './app-config.token';
export * from './tenant-key.token';

Loading…
Cancel
Save