Skip to content

Commit 9d88206

Browse files
jhosefmarksjhonyeduardo
authored andcommitted
feat(table): permite traduzir literais usando serviço i18n
1 parent 1d819e6 commit 9d88206

File tree

4 files changed

+37
-29
lines changed

4 files changed

+37
-29
lines changed

projects/ui/src/lib/components/po-table/po-table-base.component.spec.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Directive } from '@angular/core';
33
import * as utilsFunctions from '../../utils/util';
44
import { expectPropertiesValues, expectSettersMethod } from '../../util-test/util-expect.spec';
55
import { PoDateService } from '../../services/po-date/po-date.service';
6+
import { PoLanguageService } from '../../services/po-language/po-language.service';
67
import { poLocaleDefault } from '../../utils/util';
78

89
import { PoTableAction } from './interfaces/po-table-action.interface';
@@ -18,14 +19,16 @@ class PoTableComponent extends PoTableBaseComponent {
1819

1920
describe('PoTableBaseComponent:', () => {
2021
let dateService: PoDateService;
22+
let languageService: PoLanguageService;
2123
let component: PoTableComponent;
2224
let actions: Array<PoTableAction>;
2325
let columns: Array<PoTableColumn>;
2426
let items;
2527

2628
beforeEach(() => {
2729
dateService = new PoDateService();
28-
component = new PoTableComponent(dateService);
30+
languageService = new PoLanguageService();
31+
component = new PoTableComponent(dateService, languageService);
2932

3033
actions = [
3134
{
@@ -1106,47 +1109,47 @@ describe('PoTableBaseComponent:', () => {
11061109

11071110
describe('p-literals:', () => {
11081111
it('should be in portuguese if browser is setted with an unsupported language', () => {
1109-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue('zw');
1112+
component['language'] = 'zw';
11101113

11111114
component.literals = {};
11121115

11131116
expect(component.literals).toEqual(poTableLiteralsDefault[poLocaleDefault]);
11141117
});
11151118

11161119
it('should be in portuguese if browser is setted with `pt`', () => {
1117-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue('pt');
1120+
component['language'] = 'pt';
11181121

11191122
component.literals = {};
11201123

11211124
expect(component.literals).toEqual(poTableLiteralsDefault.pt);
11221125
});
11231126

11241127
it('should be in english if browser is setted with `en`', () => {
1125-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue('en');
1128+
component['language'] = 'en';
11261129

11271130
component.literals = {};
11281131

11291132
expect(component.literals).toEqual(poTableLiteralsDefault.en);
11301133
});
11311134

11321135
it('should be in spanish if browser is setted with `es`', () => {
1133-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue('es');
1136+
component['language'] = 'es';
11341137

11351138
component.literals = {};
11361139

11371140
expect(component.literals).toEqual(poTableLiteralsDefault.es);
11381141
});
11391142

11401143
it('should be in russian if browser is setted with `ru`', () => {
1141-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue('ru');
1144+
component['language'] = 'ru';
11421145

11431146
component.literals = {};
11441147

11451148
expect(component.literals).toEqual(poTableLiteralsDefault.ru);
11461149
});
11471150

11481151
it('should accept custom literals', () => {
1149-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue(poLocaleDefault);
1152+
component['language'] = poLocaleDefault;
11501153

11511154
const customLiterals = Object.assign({}, poTableLiteralsDefault[poLocaleDefault]);
11521155

@@ -1161,13 +1164,13 @@ describe('PoTableBaseComponent:', () => {
11611164
it('should update property with default literals if is setted with invalid values', () => {
11621165
const invalidValues = [null, undefined, false, true, '', 'literals', 0, 10, [], [1, 2], () => {}];
11631166

1164-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue(poLocaleDefault);
1167+
component['language'] = poLocaleDefault;
11651168

11661169
expectPropertiesValues(component, 'literals', invalidValues, poTableLiteralsDefault[poLocaleDefault]);
11671170
});
11681171

11691172
it('should get literals directly from poTableLiteralsDefault if it not initialized', () => {
1170-
spyOn(utilsFunctions, <any>'browserLanguage').and.returnValue('pt');
1173+
component['language'] = 'pt';
11711174
expect(component.literals).toEqual(poTableLiteralsDefault['pt']);
11721175
});
11731176
});

projects/ui/src/lib/components/po-table/po-table-base.component.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
import { EventEmitter, Input, OnChanges, Output, Directive, SimpleChanges } from '@angular/core';
22

3-
import {
4-
browserLanguage,
5-
capitalizeFirstLetter,
6-
convertToBoolean,
7-
isTypeof,
8-
sortValues,
9-
poLocaleDefault
10-
} from '../../utils/util';
3+
import { capitalizeFirstLetter, convertToBoolean, isTypeof, sortValues, poLocaleDefault } from '../../utils/util';
114
import { PoDateService } from '../../services/po-date/po-date.service';
5+
import { PoLanguageService } from '../../services/po-language/po-language.service';
126

137
import { PoTableAction } from './interfaces/po-table-action.interface';
148
import { PoTableColumn } from './interfaces/po-table-column.interface';
@@ -96,6 +90,7 @@ export abstract class PoTableBaseComponent implements OnChanges {
9690
private _loading?: boolean = false;
9791
private _selectable?: boolean;
9892
private _columnManager?: boolean = true;
93+
private language: string = poLocaleDefault;
9994

10095
allColumnsWidthPixels: boolean;
10196
columnMasterDetail: PoTableColumn;
@@ -259,21 +254,22 @@ export abstract class PoTableBaseComponent implements OnChanges {
259254
* </po-table>
260255
* ```
261256
*
262-
* > O objeto padrão de literais será traduzido de acordo com o idioma do *browser* (pt, en, es).
257+
* > O objeto padrão de literais será traduzido de acordo com o idioma do
258+
* [`PoI18nService`](/documentation/po-i18n) ou do browser.
263259
*/
264260
@Input('p-literals') set literals(value: PoTableLiterals) {
265261
if (value instanceof Object && !(value instanceof Array)) {
266262
this._literals = {
267263
...poTableLiteralsDefault[poLocaleDefault],
268-
...poTableLiteralsDefault[browserLanguage()],
264+
...poTableLiteralsDefault[this.language],
269265
...value
270266
};
271267
} else {
272-
this._literals = poTableLiteralsDefault[browserLanguage()];
268+
this._literals = poTableLiteralsDefault[this.language];
273269
}
274270
}
275271
get literals() {
276-
return this._literals || poTableLiteralsDefault[browserLanguage()];
272+
return this._literals || poTableLiteralsDefault[this.language];
277273
}
278274

279275
/**
@@ -524,7 +520,9 @@ export abstract class PoTableBaseComponent implements OnChanges {
524520
return this.sortedColumn.ascending ? PoTableColumnSortType.Ascending : PoTableColumnSortType.Descending;
525521
}
526522

527-
constructor(private poDate: PoDateService) {}
523+
constructor(private poDate: PoDateService, languageService: PoLanguageService) {
524+
this.language = languageService.getShortLanguage();
525+
}
528526

529527
ngOnChanges(changes: SimpleChanges): void {
530528
if (this.singleSelect || this.hideSelectAll) {

projects/ui/src/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ import {
1313
ViewChild
1414
} from '@angular/core';
1515

16-
import { browserLanguage, capitalizeFirstLetter, convertToInt, poLocaleDefault } from '../../../utils/util';
16+
import { capitalizeFirstLetter, convertToInt, poLocaleDefault } from '../../../utils/util';
1717
import { PoCheckboxGroupOption } from '../../po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface';
1818
import { PoPopoverComponent } from '../../po-popover/po-popover.component';
19+
import { PoLanguageService } from '../../../services/po-language/po-language.service';
1920

2021
import { PoTableColumn } from '../interfaces/po-table-column.interface';
2122

@@ -47,11 +48,8 @@ export const poTableColumnManagerLiteralsDefault = {
4748
export class PoTableColumnManagerComponent implements OnInit, OnChanges, OnDestroy {
4849
private _maxColumns: number = PoTableColumnManagerMaxColumnsDefault;
4950

51+
literals;
5052
columnsOptions: Array<PoCheckboxGroupOption> = [];
51-
literals = {
52-
...poTableColumnManagerLiteralsDefault[poLocaleDefault],
53-
...poTableColumnManagerLiteralsDefault[browserLanguage()]
54-
};
5553
visibleColumns: Array<string> = [];
5654

5755
private defaultColumns: Array<PoTableColumn> = [];
@@ -73,7 +71,14 @@ export class PoTableColumnManagerComponent implements OnInit, OnChanges, OnDestr
7371

7472
@ViewChild(PoPopoverComponent) popover: PoPopoverComponent;
7573

76-
constructor(private renderer: Renderer2) {}
74+
constructor(private renderer: Renderer2, languageService: PoLanguageService) {
75+
const language = languageService.getShortLanguage();
76+
77+
this.literals = {
78+
...poTableColumnManagerLiteralsDefault[poLocaleDefault],
79+
...poTableColumnManagerLiteralsDefault[language]
80+
};
81+
}
7782

7883
ngOnInit() {
7984
this.updateColumnsOptions(this.columns);

projects/ui/src/lib/components/po-table/po-table.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Router } from '@angular/router';
2020

2121
import { convertToBoolean } from '../../utils/util';
2222
import { PoDateService } from '../../services/po-date/po-date.service';
23+
import { PoLanguageService } from '../../services/po-language/po-language.service';
2324
import { PoPopupComponent } from '../po-popup/po-popup.component';
2425

2526
import { PoTableAction } from './interfaces/po-table-action.interface';
@@ -121,11 +122,12 @@ export class PoTableComponent extends PoTableBaseComponent implements AfterViewI
121122
differs: IterableDiffers,
122123
viewRef: ViewContainerRef,
123124
renderer: Renderer2,
125+
poLanguageService: PoLanguageService,
124126
private changeDetector: ChangeDetectorRef,
125127
private decimalPipe: DecimalPipe,
126128
private router: Router
127129
) {
128-
super(poDate);
130+
super(poDate, poLanguageService);
129131

130132
this.differ = differs.find([]).create(null);
131133

0 commit comments

Comments
 (0)