mirror of https://github.com/ghostfolio/ghostfolio
Browse Source
* Localize default account name created during user registration * Update changelogpull/7908/head
committed by
GitHub
10 changed files with 94 additions and 21 deletions
@ -0,0 +1,40 @@ |
|||||
|
import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; |
||||
|
|
||||
|
import { |
||||
|
getLanguageCodeFromHeader, |
||||
|
getSupportedLanguageCode |
||||
|
} from './language.helper'; |
||||
|
|
||||
|
describe('getLanguageCodeFromHeader', () => { |
||||
|
it('should get the primary language code', () => { |
||||
|
expect(getLanguageCodeFromHeader('de-CH,de;q=0.9,en;q=0.8')).toEqual('de'); |
||||
|
}); |
||||
|
|
||||
|
it('should use the default language code if the header is missing', () => { |
||||
|
expect(getLanguageCodeFromHeader()).toEqual(DEFAULT_LANGUAGE_CODE); |
||||
|
}); |
||||
|
|
||||
|
it('should use the default language code if the language is not supported', () => { |
||||
|
expect(getLanguageCodeFromHeader('xx')).toEqual(DEFAULT_LANGUAGE_CODE); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('getSupportedLanguageCode', () => { |
||||
|
it('should return a supported language code', () => { |
||||
|
expect(getSupportedLanguageCode('de')).toEqual('de'); |
||||
|
}); |
||||
|
|
||||
|
it('should ignore the region subtag', () => { |
||||
|
expect(getSupportedLanguageCode('de-CH')).toEqual('de'); |
||||
|
}); |
||||
|
|
||||
|
it('should ignore the case', () => { |
||||
|
expect(getSupportedLanguageCode('DE')).toEqual('de'); |
||||
|
}); |
||||
|
|
||||
|
it('should use the default language code if the language is not supported', () => { |
||||
|
expect(getSupportedLanguageCode()).toEqual(DEFAULT_LANGUAGE_CODE); |
||||
|
expect(getSupportedLanguageCode('')).toEqual(DEFAULT_LANGUAGE_CODE); |
||||
|
expect(getSupportedLanguageCode('xx')).toEqual(DEFAULT_LANGUAGE_CODE); |
||||
|
}); |
||||
|
}); |
||||
@ -0,0 +1,24 @@ |
|||||
|
import { |
||||
|
DEFAULT_LANGUAGE_CODE, |
||||
|
SUPPORTED_LANGUAGE_CODES |
||||
|
} from '@ghostfolio/common/config'; |
||||
|
|
||||
|
type SupportedLanguageCode = (typeof SUPPORTED_LANGUAGE_CODES)[number]; |
||||
|
|
||||
|
export function getLanguageCodeFromHeader( |
||||
|
acceptLanguage?: string |
||||
|
): SupportedLanguageCode { |
||||
|
return getSupportedLanguageCode(acceptLanguage?.split(',')[0]); |
||||
|
} |
||||
|
|
||||
|
export function getSupportedLanguageCode( |
||||
|
languageCode?: string |
||||
|
): SupportedLanguageCode { |
||||
|
const languageCodeToUse = languageCode |
||||
|
?.split('-')[0] |
||||
|
.toLowerCase() as SupportedLanguageCode; |
||||
|
|
||||
|
return SUPPORTED_LANGUAGE_CODES.includes(languageCodeToUse) |
||||
|
? languageCodeToUse |
||||
|
: DEFAULT_LANGUAGE_CODE; |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
import { IsOptional, IsString } from 'class-validator'; |
||||
|
|
||||
|
export class CreateUserDto { |
||||
|
@IsOptional() |
||||
|
@IsString() |
||||
|
languageCode?: string; |
||||
|
} |
||||
Loading…
Reference in new issue