Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
77082177
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
77082177
编写于
4月 23, 2018
作者:
D
Dirk Baeumer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #48404: Perfer language packs over built in languages even for core languages
上级
118c3bf4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
96 addition
and
95 deletion
+96
-95
src/main.js
src/main.js
+96
-95
未找到文件。
src/main.js
浏览文件 @
77082177
...
...
@@ -280,111 +280,112 @@ function getNLSConfiguration(locale) {
return
undefined
;
}
let
isCoreLanguage
=
true
;
if
(
locale
)
{
isCoreLanguage
=
[
'
de
'
,
'
es
'
,
'
fr
'
,
'
it
'
,
'
ja
'
,
'
ko
'
,
'
ru
'
,
'
zh-cn
'
,
'
zh-tw
'
].
some
((
language
)
=>
{
return
locale
===
language
||
locale
.
startsWith
(
language
+
'
-
'
);
});
}
if
(
isCoreLanguage
)
{
return
Promise
.
resolve
(
resolveLocale
(
locale
));
}
else
{
perf
.
mark
(
'
nlsGeneration:start
'
);
let
defaultResult
=
function
()
{
perf
.
mark
(
'
nlsGeneration:start
'
);
let
defaultResult
=
function
(
locale
)
{
let
isCoreLanguage
=
true
;
if
(
locale
)
{
isCoreLanguage
=
[
'
de
'
,
'
es
'
,
'
fr
'
,
'
it
'
,
'
ja
'
,
'
ko
'
,
'
ru
'
,
'
zh-cn
'
,
'
zh-tw
'
].
some
((
language
)
=>
{
return
locale
===
language
||
locale
.
startsWith
(
language
+
'
-
'
);
});
}
if
(
isCoreLanguage
)
{
let
result
=
resolveLocale
(
locale
);
perf
.
mark
(
'
nlsGeneration:end
'
);
return
Promise
.
resolve
(
result
);
}
else
{
perf
.
mark
(
'
nlsGeneration:end
'
);
return
Promise
.
resolve
({
locale
:
locale
,
availableLanguages
:
{}
});
};
try
{
let
commit
=
getCommit
();
if
(
!
commit
)
{
return
defaultResult
();
}
let
configs
=
getLanguagePackConfigurations
();
if
(
!
configs
)
{
return
defaultResult
();
}
let
initialLocale
=
locale
;
locale
=
resolveLanguagePackLocale
(
configs
,
locale
);
if
(
!
locale
)
{
return
defaultResult
();
}
let
packConfig
=
configs
[
locale
];
let
mainPack
;
if
(
!
packConfig
||
typeof
packConfig
.
hash
!==
'
string
'
||
!
packConfig
.
translations
||
typeof
(
mainPack
=
packConfig
.
translations
[
'
vscode
'
])
!==
'
string
'
)
{
return
defaultResult
();
}
};
try
{
let
commit
=
getCommit
();
if
(
!
commit
)
{
return
defaultResult
(
locale
);
}
let
configs
=
getLanguagePackConfigurations
();
if
(
!
configs
)
{
return
defaultResult
(
locale
);
}
let
initialLocale
=
locale
;
locale
=
resolveLanguagePackLocale
(
configs
,
locale
);
if
(
!
locale
)
{
return
defaultResult
(
initialLocale
);
}
let
packConfig
=
configs
[
locale
];
let
mainPack
;
if
(
!
packConfig
||
typeof
packConfig
.
hash
!==
'
string
'
||
!
packConfig
.
translations
||
typeof
(
mainPack
=
packConfig
.
translations
[
'
vscode
'
])
!==
'
string
'
)
{
return
defaultResult
(
locale
);
}
return
exists
(
mainPack
).
then
((
fileExists
)
=>
{
if
(
!
fileExists
)
{
return
defaultResult
(
locale
);
}
return
exists
(
mainPack
).
then
((
fileExists
)
=>
{
if
(
!
fileExists
)
{
return
defaultResult
();
let
packId
=
packConfig
.
hash
+
'
.
'
+
locale
;
let
cacheRoot
=
path
.
join
(
userData
,
'
clp
'
,
packId
);
let
coreLocation
=
path
.
join
(
cacheRoot
,
commit
);
let
translationsConfigFile
=
path
.
join
(
cacheRoot
,
'
tcf.json
'
);
let
result
=
{
locale
:
initialLocale
,
availableLanguages
:
{
'
*
'
:
locale
},
_languagePackId
:
packId
,
_translationsConfigFile
:
translationsConfigFile
,
_cacheRoot
:
cacheRoot
,
_resolvedLanguagePackCoreLocation
:
coreLocation
};
return
exists
(
coreLocation
).
then
((
fileExists
)
=>
{
if
(
fileExists
)
{
// We don't wait for this. No big harm if we can't touch
touch
(
coreLocation
).
catch
(()
=>
{});
perf
.
mark
(
'
nlsGeneration:end
'
);
return
result
;
}
let
packId
=
packConfig
.
hash
+
'
.
'
+
locale
;
let
cacheRoot
=
path
.
join
(
userData
,
'
clp
'
,
packId
);
let
coreLocation
=
path
.
join
(
cacheRoot
,
commit
);
let
translationsConfigFile
=
path
.
join
(
cacheRoot
,
'
tcf.json
'
);
let
result
=
{
locale
:
initialLocale
,
availableLanguages
:
{
'
*
'
:
locale
},
_languagePackId
:
packId
,
_translationsConfigFile
:
translationsConfigFile
,
_cacheRoot
:
cacheRoot
,
_resolvedLanguagePackCoreLocation
:
coreLocation
};
return
exists
(
coreLocation
).
then
((
fileExists
)
=>
{
if
(
fileExists
)
{
// We don't wait for this. No big harm if we can't touch
touch
(
coreLocation
).
catch
(()
=>
{});
perf
.
mark
(
'
nlsGeneration:end
'
);
return
result
;
}
return
mkdirp
(
coreLocation
).
then
(()
=>
{
return
Promise
.
all
([
readFile
(
path
.
join
(
__dirname
,
'
nls.metadata.json
'
)),
readFile
(
mainPack
)]);
}).
then
((
values
)
=>
{
let
metadata
=
JSON
.
parse
(
values
[
0
]);
let
packData
=
JSON
.
parse
(
values
[
1
]).
contents
;
let
bundles
=
Object
.
keys
(
metadata
.
bundles
);
let
writes
=
[];
for
(
let
bundle
of
bundles
)
{
let
modules
=
metadata
.
bundles
[
bundle
];
let
target
=
Object
.
create
(
null
);
for
(
let
module
of
modules
)
{
let
keys
=
metadata
.
keys
[
module
];
let
defaultMessages
=
metadata
.
messages
[
module
];
let
translations
=
packData
[
module
];
let
targetStrings
;
if
(
translations
)
{
targetStrings
=
[];
for
(
let
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
let
elem
=
keys
[
i
];
let
key
=
typeof
elem
===
'
string
'
?
elem
:
elem
.
key
;
let
translatedMessage
=
translations
[
key
];
if
(
translatedMessage
===
undefined
)
{
translatedMessage
=
defaultMessages
[
i
];
}
targetStrings
.
push
(
translatedMessage
);
return
mkdirp
(
coreLocation
).
then
(()
=>
{
return
Promise
.
all
([
readFile
(
path
.
join
(
__dirname
,
'
nls.metadata.json
'
)),
readFile
(
mainPack
)]);
}).
then
((
values
)
=>
{
let
metadata
=
JSON
.
parse
(
values
[
0
]);
let
packData
=
JSON
.
parse
(
values
[
1
]).
contents
;
let
bundles
=
Object
.
keys
(
metadata
.
bundles
);
let
writes
=
[];
for
(
let
bundle
of
bundles
)
{
let
modules
=
metadata
.
bundles
[
bundle
];
let
target
=
Object
.
create
(
null
);
for
(
let
module
of
modules
)
{
let
keys
=
metadata
.
keys
[
module
];
let
defaultMessages
=
metadata
.
messages
[
module
];
let
translations
=
packData
[
module
];
let
targetStrings
;
if
(
translations
)
{
targetStrings
=
[];
for
(
let
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
let
elem
=
keys
[
i
];
let
key
=
typeof
elem
===
'
string
'
?
elem
:
elem
.
key
;
let
translatedMessage
=
translations
[
key
];
if
(
translatedMessage
===
undefined
)
{
translatedMessage
=
defaultMessages
[
i
];
}
}
else
{
targetStrings
=
defaultMessages
;
targetStrings
.
push
(
translatedMessage
);
}
target
[
module
]
=
targetStrings
;
}
else
{
targetStrings
=
defaultMessages
;
}
writes
.
push
(
writeFile
(
path
.
join
(
coreLocation
,
bundle
.
replace
(
/
\/
/g
,
'
!
'
)
+
'
.nls.json
'
),
JSON
.
stringify
(
target
)))
;
target
[
module
]
=
targetStrings
;
}
writes
.
push
(
writeFile
(
translationsConfigFile
,
JSON
.
stringify
(
packConfig
.
translations
)));
return
Promise
.
all
(
writes
);
}).
then
(()
=>
{
perf
.
mark
(
'
nlsGeneration:end
'
);
return
result
;
}).
catch
((
err
)
=>
{
console
.
error
(
'
Generating translation files failed.
'
,
err
);
return
defaultResult
();
});
writes
.
push
(
writeFile
(
path
.
join
(
coreLocation
,
bundle
.
replace
(
/
\/
/g
,
'
!
'
)
+
'
.nls.json
'
),
JSON
.
stringify
(
target
)));
}
writes
.
push
(
writeFile
(
translationsConfigFile
,
JSON
.
stringify
(
packConfig
.
translations
)));
return
Promise
.
all
(
writes
);
}).
then
(()
=>
{
perf
.
mark
(
'
nlsGeneration:end
'
);
return
result
;
}).
catch
((
err
)
=>
{
console
.
error
(
'
Generating translation files failed.
'
,
err
);
return
defaultResult
(
locale
);
});
});
}
catch
(
err
)
{
console
.
error
(
'
Generating translation files failed.
'
,
err
);
return
defaultResult
(
);
}
}
);
}
catch
(
err
)
{
console
.
error
(
'
Generating translation files failed.
'
,
err
);
return
defaultResult
(
locale
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录