mirror of
https://github.com/cryptpad/cryptpad.git
synced 2026-09-12 19:49:59 +05:00
Merge branch 'fix-2237-zh-langs' of github.com:toomore/cryptpad-cryptpad into toomore-fix-2237-zh-langs
This commit is contained in:
commit
5354adfea1
@ -29,22 +29,66 @@ var map = {
|
||||
'sv': 'Svenska',
|
||||
//'te': 'తెలుగు',
|
||||
'uk': 'Українська',
|
||||
'zh': '中文(簡體)',
|
||||
'zh_Hans': '中文(簡體)',
|
||||
'zh_Hant': '中文(正體)',
|
||||
};
|
||||
|
||||
var Messages = {};
|
||||
var LS_LANG = "CRYPTPAD_LANG";
|
||||
var getStoredLanguage = function () { return localStorage && localStorage.getItem(LS_LANG); };
|
||||
var getBrowserLanguage = function () { return navigator.language || navigator.userLanguage || ''; };
|
||||
// Normalize browser/localStorage language labels to CryptPad internal keys.
|
||||
// We keep this centralized to avoid scattered `if (l === 'zh') ...` logic.
|
||||
var langAliases = {
|
||||
'zh': 'zh_Hans',
|
||||
'zh-cn': 'zh_Hans',
|
||||
'zh-sg': 'zh_Hans',
|
||||
'zh-hans': 'zh_Hans',
|
||||
'zh_hans': 'zh_Hans',
|
||||
|
||||
'zh-tw': 'zh_Hant',
|
||||
'zh-hk': 'zh_Hant',
|
||||
'zh-mo': 'zh_Hant',
|
||||
'zh-hant': 'zh_Hant',
|
||||
'zh_hant': 'zh_Hant'
|
||||
};
|
||||
var normalizeLanguage = function (l) {
|
||||
if (!l) { return l; }
|
||||
// If it already matches a supported internal key, return as-is.
|
||||
if (map[l]) { return l; }
|
||||
var lLower = String(l).toLowerCase();
|
||||
return langAliases[lLower] || l;
|
||||
};
|
||||
var getLanguage = Messages._getLanguage = function () {
|
||||
if (window.cryptpadLanguage) { return window.cryptpadLanguage; }
|
||||
if (window.cryptpadLanguage) {
|
||||
var original = window.cryptpadLanguage;
|
||||
var normalized = normalizeLanguage(original);
|
||||
// Migrate legacy localStorage language key.
|
||||
if (original === 'zh' && normalized === 'zh_Hans') {
|
||||
try { localStorage.setItem(LS_LANG, 'zh_Hans'); } catch (e) { console.log(e); }
|
||||
}
|
||||
window.cryptpadLanguage = normalized;
|
||||
return normalized;
|
||||
}
|
||||
var l = getBrowserLanguage();
|
||||
try {
|
||||
l = getStoredLanguage() || getBrowserLanguage();
|
||||
} catch (e) { console.log(e); }
|
||||
return map[l] ? l :
|
||||
(map[l.split('-')[0]] ? l.split('-')[0] :
|
||||
(map[l.split('_')[0]] ? l.split('_')[0] : 'en'));
|
||||
|
||||
var originalLang = l;
|
||||
l = normalizeLanguage(l);
|
||||
// Migrate legacy localStorage language key.
|
||||
if (originalLang === 'zh' && l === 'zh_Hans') {
|
||||
try { localStorage.setItem(LS_LANG, 'zh_Hans'); } catch (e) { console.log(e); }
|
||||
}
|
||||
|
||||
if (map[l]) { return l; }
|
||||
|
||||
var dash = (l || '').split('-')[0];
|
||||
var under = (l || '').split('_')[0];
|
||||
if (map[dash]) { return dash; }
|
||||
if (map[under]) { return under; }
|
||||
return 'en';
|
||||
};
|
||||
var language = getLanguage();
|
||||
window.cryptpadLanguage = language;
|
||||
@ -59,6 +103,8 @@ var reqPaths = {
|
||||
Object.keys(map).forEach(function (k) {
|
||||
reqPaths["/common/translations/messages."+k+".js"] = "json!/common/translations/messages."+k+".json";
|
||||
});
|
||||
// Legacy locale key for Simplified Chinese (before zh_Hans)
|
||||
reqPaths["/common/translations/messages.zh.js"] = "json!/common/translations/messages.zh_Hans.json";
|
||||
require.config({
|
||||
map: {
|
||||
"*": reqPaths
|
||||
|
||||
@ -9,10 +9,9 @@
|
||||
* If you want to check all the existing translation keys, you can open the internal language file
|
||||
but you should not change it directly (/common/translations/messages.{LANG}.js)
|
||||
*/
|
||||
define(['/common/translations/messages.zh.js'], function (Messages) {
|
||||
define(['/common/translations/messages.zh_Hans.js'], function (Messages) {
|
||||
// Replace the existing keys in your copied file here:
|
||||
// Messages.button_newpad = "New Rich Text Document";
|
||||
|
||||
return Messages;
|
||||
});
|
||||
|
||||
@ -51,6 +51,8 @@ try {
|
||||
}
|
||||
|
||||
var preferredLanguage = config.preferredLanguage;
|
||||
var langAliases = { 'zh': 'zh_Hans' };
|
||||
if (langAliases[preferredLanguage]) { preferredLanguage = langAliases[preferredLanguage]; }
|
||||
var Preferred;
|
||||
|
||||
var noScriptContent = [ Messages.ui_jsRequired ];
|
||||
|
||||
@ -67,6 +67,8 @@ const factory = (Feedback, Hash, Util,
|
||||
var migrateLanguage = function () {
|
||||
if (!localStorage.CRYPTPAD_LANG) { return; }
|
||||
var l = localStorage.CRYPTPAD_LANG;
|
||||
var langAliases = { 'zh': 'zh_Hans' };
|
||||
if (langAliases[l]) { l = langAliases[l]; }
|
||||
userObject.settings.language = l;
|
||||
};
|
||||
if (version < 3) {
|
||||
|
||||
@ -262,7 +262,11 @@ define([
|
||||
if (!isRegister && !isProxyEmpty(rt.proxy)) {
|
||||
var l = Util.find(rt.proxy, ['settings', 'general', 'language']);
|
||||
var LS_LANG = "CRYPTPAD_LANG";
|
||||
if (l) { localStorage.setItem(LS_LANG, l); }
|
||||
if (l) {
|
||||
var langAliases = { 'zh': 'zh_Hans' };
|
||||
if (langAliases[l]) { l = langAliases[l]; }
|
||||
localStorage.setItem(LS_LANG, l);
|
||||
}
|
||||
|
||||
return void LocalStore.login(undefined, res.blockHash, res.uname, function () {
|
||||
cb(void 0, res, RT);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user