Fineract backend settings with environment variables
This commit is contained in:
committed by
Arnold Gálovics
parent
1b72136411
commit
14ceb4f3fd
@@ -51,15 +51,7 @@ import { APP_BASE_HREF, LocationStrategy } from '@angular/common';
|
||||
imports: [
|
||||
SharedModule,
|
||||
HttpClientModule,
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useFactory: (http: HttpClient, locationStrategy: LocationStrategy) => {
|
||||
return new TranslateHttpLoader(http, `${ window.location.protocol }//${ window.location.host }${locationStrategy.getBaseHref()}/assets/translations/`, '.json');
|
||||
},
|
||||
deps: [HttpClient, LocationStrategy]
|
||||
}
|
||||
}),
|
||||
TranslateModule.forRoot(),
|
||||
RouterModule
|
||||
],
|
||||
declarations: [
|
||||
|
||||
@@ -6,23 +6,27 @@ import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/c
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
/** Environment Configuration */
|
||||
import { environment } from 'environments/environment';
|
||||
import { SettingsService } from 'app/settings/settings.service';
|
||||
|
||||
/**
|
||||
* Http request interceptor to prefix a request with `environment.serverUrl`.
|
||||
* Http request interceptor to prefix a request with `serverUrl`.
|
||||
*/
|
||||
@Injectable()
|
||||
export class ApiPrefixInterceptor implements HttpInterceptor {
|
||||
/**
|
||||
* @param {SettingsService} settingsService Settings Service
|
||||
*/
|
||||
constructor(private settingsService: SettingsService) {}
|
||||
|
||||
/**
|
||||
* Intercepts a Http request and prefixes it with `environment.serverUrl`.
|
||||
* Intercepts a Http request and prefixes it with `serverUrl`.
|
||||
*/
|
||||
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
|
||||
/**
|
||||
* Ignore URLs that are complete for i18n
|
||||
*/
|
||||
if (!request.url.includes('http:') && !request.url.includes('https:')) {
|
||||
request = request.clone({ url: environment.serverUrl + request.url });
|
||||
request = request.clone({ url: this.settingsService.serverUrl + request.url });
|
||||
}
|
||||
|
||||
return next.handle(request);
|
||||
|
||||
@@ -2,16 +2,11 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
/** Translation Imports */
|
||||
import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
|
||||
/** Custom Services */
|
||||
import { Logger } from '../logger/logger.service';
|
||||
|
||||
/** Other Imports */
|
||||
import { includes } from 'lodash';
|
||||
import * as enUS from '../../../translations/en-US.json';
|
||||
import * as frFR from '../../../translations/fr-FR.json';
|
||||
|
||||
/** Initialize Logger */
|
||||
const log = new Logger('I18nService');
|
||||
|
||||
@@ -19,71 +14,18 @@ const log = new Logger('I18nService');
|
||||
* Pass-through function to mark a string for translation extraction.
|
||||
* Running `npm translations:extract` will include the given string by using this.
|
||||
* @param {string} s The string to extract for translation.
|
||||
* @return {string} The same string.
|
||||
* @return {string} The translated string.
|
||||
*/
|
||||
export function extract(s: string) {
|
||||
return s;
|
||||
return I18nService.translate(s);
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class I18nService {
|
||||
|
||||
/** Key to store current language of application in local storage. */
|
||||
private languageStorageKey = 'mifosXLanguage';
|
||||
|
||||
defaultLanguage: string;
|
||||
supportedLanguages: string[];
|
||||
|
||||
constructor(private translateService: TranslateService) { }
|
||||
|
||||
/**
|
||||
* Initializes i18n for the application.
|
||||
* Loads language from local storage if present, or sets default language.
|
||||
* @param {!string} defaultLanguage The default language to use.
|
||||
* @param {Array.<String>} supportedLanguages The list of supported languages.
|
||||
*/
|
||||
init(defaultLanguage: string, supportedLanguages: string[]) {
|
||||
this.defaultLanguage = defaultLanguage;
|
||||
this.supportedLanguages = supportedLanguages;
|
||||
this.language = '';
|
||||
|
||||
this.translateService.onLangChange
|
||||
.subscribe((event: LangChangeEvent) => { localStorage.setItem(this.languageStorageKey, event.lang); });
|
||||
public static translate(key: string): string {
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current language.
|
||||
* Note: The current language is saved to the local storage.
|
||||
* If no parameter is specified, the language is loaded from local storage (if present).
|
||||
* @param {string} language The IETF language code to set.
|
||||
*/
|
||||
set language(language: string) {
|
||||
language = language || localStorage.getItem(this.languageStorageKey) || this.translateService.getBrowserCultureLang();
|
||||
let isSupportedLanguage = includes(this.supportedLanguages, language);
|
||||
|
||||
// If no exact match is found, search without the region
|
||||
if (language && !isSupportedLanguage) {
|
||||
language = language.split('-')[0];
|
||||
language = this.supportedLanguages.find(supportedLanguage => supportedLanguage.startsWith(language)) || '';
|
||||
isSupportedLanguage = Boolean(language);
|
||||
}
|
||||
|
||||
// Fallback if language is not supported
|
||||
if (!isSupportedLanguage) {
|
||||
language = this.defaultLanguage;
|
||||
}
|
||||
|
||||
log.debug(`Language set to ${language}`);
|
||||
localStorage.setItem(this.languageStorageKey, language);
|
||||
this.translateService.setDefaultLang(language);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current language.
|
||||
* @return {string} The current language code.
|
||||
*/
|
||||
get language(): string {
|
||||
return this.translateService.currentLang;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { DatePipe } from '@angular/common';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { SettingsService } from 'app/settings/settings.service';
|
||||
import * as moment from 'moment';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -10,13 +11,20 @@ export class Dates {
|
||||
constructor(private settingsService: SettingsService,
|
||||
private datePipe: DatePipe) {}
|
||||
|
||||
public getDate(timestamp: any) {
|
||||
public getDate(timestamp: any): string {
|
||||
const dateFormat = this.settingsService.dateFormat;
|
||||
return this.datePipe.transform(timestamp, dateFormat);
|
||||
}
|
||||
|
||||
public formatDate(timestamp: any, dateFormat: string) {
|
||||
public formatDate(timestamp: any, dateFormat: string): string {
|
||||
return this.datePipe.transform(timestamp, dateFormat);
|
||||
}
|
||||
|
||||
public parseDate(value: any): Date {
|
||||
if (value instanceof Array) {
|
||||
return moment(value.join('-'), 'YYYY-MM-DD').toDate();
|
||||
} else {
|
||||
return moment(value).toDate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user