]>
git.proxmox.com Git - mirror_novnc.git/blob - tests/test.localization.js
301ab79f4b71c7beaf26c2fcfa51c66f0be817cb
1 const expect
= chai
.expect
;
2 import { l10n
} from '../app/localization.js';
4 describe('Localization', function () {
7 describe('language selection', function () {
9 beforeEach(function () {
10 // window.navigator is a protected read-only property in many
11 // environments, so we need to redefine it whilst running these
13 origNavigator
= Object
.getOwnPropertyDescriptor(window
, "navigator");
14 if (origNavigator
=== undefined) {
15 // Object.getOwnPropertyDescriptor() doesn't work
16 // properly in any version of IE
20 Object
.defineProperty(window
, "navigator", {value
: {}});
21 if (window
.navigator
.languages
!== undefined) {
22 // Object.defineProperty() doesn't work properly in old
27 window
.navigator
.languages
= [];
29 afterEach(function () {
30 if (origNavigator
!== undefined) {
31 Object
.defineProperty(window
, "navigator", origNavigator
);
35 it('should use English by default', function () {
36 expect(l10n
.language
).to
.equal('en');
38 it('should use English if no user language matches', function () {
39 window
.navigator
.languages
= ["nl", "de"];
40 l10n
.setup(["es", "fr"]);
41 expect(l10n
.language
).to
.equal('en');
43 it('should use the most preferred user language', function () {
44 window
.navigator
.languages
= ["nl", "de", "fr"];
45 l10n
.setup(["es", "fr", "de"]);
46 expect(l10n
.language
).to
.equal('de');
48 it('should prefer sub-languages languages', function () {
49 window
.navigator
.languages
= ["pt-BR"];
50 l10n
.setup(["pt", "pt-BR"]);
51 expect(l10n
.language
).to
.equal('pt-BR');
53 it('should fall back to language "parents"', function () {
54 window
.navigator
.languages
= ["pt-BR"];
55 l10n
.setup(["fr", "pt", "de"]);
56 expect(l10n
.language
).to
.equal('pt');
58 it('should not use specific language when user asks for a generic language', function () {
59 window
.navigator
.languages
= ["pt", "de"];
60 l10n
.setup(["fr", "pt-BR", "de"]);
61 expect(l10n
.language
).to
.equal('de');
63 it('should handle underscore as a separator', function () {
64 window
.navigator
.languages
= ["pt-BR"];
65 l10n
.setup(["pt_BR"]);
66 expect(l10n
.language
).to
.equal('pt_BR');
68 it('should handle difference in case', function () {
69 window
.navigator
.languages
= ["pt-br"];
70 l10n
.setup(["pt-BR"]);
71 expect(l10n
.language
).to
.equal('pt-BR');