-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlanguage-manager.js
More file actions
76 lines (65 loc) · 2.15 KB
/
language-manager.js
File metadata and controls
76 lines (65 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Language Manager for Role Inspector Extension
class LanguageManager {
constructor() {
this.supportedLanguages = ['en', 'tr'];
this.storageKey = 'roleInspectorLanguage';
this.currentLanguage = this.getCurrentLanguage();
}
getCurrentLanguage() {
// First check if user has a preference stored
const stored = localStorage.getItem(this.storageKey);
if (stored && this.supportedLanguages.includes(stored)) {
return stored;
}
// Then check browser language
if (typeof chrome !== 'undefined' && chrome.i18n) {
const browserLang = chrome.i18n.getUILanguage().substring(0, 2);
if (this.supportedLanguages.includes(browserLang)) {
return browserLang;
}
}
// Default to English
return 'en';
}
setLanguage(langCode) {
if (this.supportedLanguages.includes(langCode)) {
this.currentLanguage = langCode;
localStorage.setItem(this.storageKey, langCode);
// Store in chrome storage for persistence across sessions
if (typeof chrome !== 'undefined' && chrome.storage) {
chrome.storage.local.set({ [this.storageKey]: langCode });
}
return true;
}
return false;
}
async loadStoredLanguage() {
if (typeof chrome !== 'undefined' && chrome.storage) {
try {
const result = await chrome.storage.local.get([this.storageKey]);
if (result[this.storageKey] && this.supportedLanguages.includes(result[this.storageKey])) {
this.currentLanguage = result[this.storageKey];
localStorage.setItem(this.storageKey, this.currentLanguage);
}
} catch (error) {
console.log('Could not load stored language preference:', error);
}
}
}
getLanguageDisplayName(langCode) {
const displayNames = {
'en': 'English',
'tr': 'Türkçe'
};
return displayNames[langCode] || langCode.toUpperCase();
}
getSupportedLanguages() {
return this.supportedLanguages.map(code => ({
code,
name: this.getLanguageDisplayName(code),
isActive: code === this.currentLanguage
}));
}
}
// Global instance
window.languageManager = new LanguageManager();