diff --git a/aio/content/guide/architecture-services.md b/aio/content/guide/architecture-services.md
index cc331501a7..3a5c78b22e 100644
--- a/aio/content/guide/architecture-services.md
+++ b/aio/content/guide/architecture-services.md
@@ -23,7 +23,7 @@ Angular 把组件和服务区分开,以提高模块性和复用性。
* A component should not need to define things like how to fetch data from the server, validate user input, or log directly to the console. Instead, it can delegate such tasks to services. By defining that kind of processing task in an injectable service class, you make it available to any component. You can also make your app more adaptable by injecting different providers of the same kind of service, as appropriate in different circumstances.
组件不应该定义任何诸如从服务器获取数据、验证用户输入或直接往控制台中写日志等工作。
- 而要把这些任务委托给各种服务。通过把各种处理任务定义到可注入的服务类中,你可以让它可以被任何组件使用。
+ 而要把这些任务委托给各种服务。通过把各种处理任务定义到可注入的服务类中,你可以让它被任何组件使用。
通过在不同的环境中注入同一种服务的不同提供商,你还可以让你的应用更具适应性。
Angular doesn't *enforce* these principles. Angular does help you *follow* these principles by making it easy to factor your
diff --git a/aio/content/guide/router.md b/aio/content/guide/router.md
index a14988f305..74c6e49300 100644
--- a/aio/content/guide/router.md
+++ b/aio/content/guide/router.md
@@ -1633,7 +1633,7 @@ You've learned how to do the following:
* Set the router to compose HTML5 browser URLs.
- 设置路由器,使其合成 HTML5 模式的浏览器 URL。
+ 设置路由器,使其合成 HTML5 模式的浏览器 URL
* handle invalid routes with a `wildcard` route.
@@ -2623,7 +2623,7 @@ The observable `paramMap` property handles that beautifully.
不幸的是,`ngOnInit` 对每个实例只调用一次。
你需要一种方式来检测*在同一个实例中*路由参数什么时候发生了变化。
- 而 `params` 属性这个可观察对象(Observable)干净漂亮的处理了这种情况。
+ 而 `params` 属性这个可观察对象(Observable)干净漂亮地处理了这种情况。
@@ -4938,7 +4938,7 @@ As you've worked through the milestones, the application has naturally gotten la
As you continue to build out feature areas, the overall application size will continue to grow.
At some point you'll reach a tipping point where the application takes long time to load.
-完成上面的里程碑后,应用程序很自然的长大了。在继续构建特征区的过程中,应用的尺寸将会变得更大。在某一个时间点,你将达到一个顶点,应用将会需要过多的时间来加载。
+完成上面的里程碑后,应用程序很自然地长大了。在继续构建特征区的过程中,应用的尺寸将会变得更大。在某一个时间点,你将达到一个顶点,应用将会需要过多的时间来加载。
How do you combat this problem? With asynchronous routing, which loads feature modules _lazily_, on request.
Lazy loading has multiple benefits.
diff --git a/aio/content/tutorial/toh-pt4.md b/aio/content/tutorial/toh-pt4.md
index bac176c651..c8b6e42daa 100644
--- a/aio/content/tutorial/toh-pt4.md
+++ b/aio/content/tutorial/toh-pt4.md
@@ -306,7 +306,7 @@ The `HeroService` must wait for the server to respond,
`getHeroes()` cannot return immediately with hero data,
and the browser will not block while the service waits.
-`HeroService` 必须等服务器给出相应,
+`HeroService` 必须等服务器给出响应,
而 `getHeroes()` 不能立即返回英雄数据,
浏览器也不会在该服务等待期间停止响应。
@@ -609,7 +609,7 @@ This template binds directly to the component's `messageService`.
* The `*ngIf` only displays the messages area if there are messages to show.
- `*ngIf` 只有当在有消息时才会显示消息区。
+ `*ngIf` 只有在有消息时才会显示消息区。
* An `*ngFor` presents the list of messages in repeated `
` elements.
diff --git a/aio/tools/translator/dict-latest.json b/aio/tools/translator/dict-latest.json
index 762c6bf777..52ed7e2bf1 100644
--- a/aio/tools/translator/dict-latest.json
+++ b/aio/tools/translator/dict-latest.json
@@ -3686,7 +3686,7 @@
{
"key": "ACOMPONENTSHOULDNOTNEEDTODEFINETHINGSLIKEHOWTOFETCHDATAFROMTHESERVERVALIDATEUSERINPUTORLOGDIRECTLYTOTHECONSOLEINSTEADITCANDELEGATESUCHTASKSTOSERVICESBYDEFININGTHATKINDOFPROCESSINGTASKINANINJECTABLESERVICECLASSYOUMAKEITAVAILABLETOANYCOMPONENTYOUCANALSOMAKEYOURAPPMOREADAPTABLEBYINJECTINGDIFFERENTPROVIDERSOFTHESAMEKINDOFSERVICEASAPPROPRIATEINDIFFERENTCIRCUMSTANCES",
"original": "* A component should not need to define things like how to fetch data from the server, validate user input, or log directly to the console. Instead, it can delegate such tasks to services. By defining that kind of processing task in an injectable service class, you make it available to any component. You can also make your app more adaptable by injecting different providers of the same kind of service, as appropriate in different circumstances.",
- "translation": "组件不应该定义任何诸如从服务器获取数据、验证用户输入或直接往控制台中写日志等工作。\n 而要把这些任务委托给各种服务。通过把各种处理任务定义到可注入的服务类中,你可以让它可以被任何组件使用。\n 通过在不同的环境中注入同一种服务的不同提供商,你还可以让你的应用更具适应性。",
+ "translation": "组件不应该定义任何诸如从服务器获取数据、验证用户输入或直接往控制台中写日志等工作。\n 而要把这些任务委托给各种服务。通过把各种处理任务定义到可注入的服务类中,你可以让它被任何组件使用。\n 通过在不同的环境中注入同一种服务的不同提供商,你还可以让你的应用更具适应性。",
"sourceFile": "/Users/twer/private/GDE/angular-cn/aio/content/guide/architecture-services.md"
},
{
@@ -26852,7 +26852,7 @@
{
"key": "SETTHEROUTERTOCOMPOSEHTML5BROWSERURLS",
"original": "* Set the router to compose HTML5 browser URLs.",
- "translation": "设置路由器,使其合成 HTML5 模式的浏览器 URL。",
+ "translation": "设置路由器,使其合成 HTML5 模式的浏览器 URL",
"sourceFile": "/Users/twer/private/GDE/angular-cn/aio/content/guide/router.md"
},
{
@@ -27578,7 +27578,7 @@
{
"key": "UNFORTUNATELYNGONINITISONLYCALLEDONCEPERCOMPONENTINSTANTIATIONYOUNEEDAWAYTODETECTWHENTHEROUTEPARAMETERSCHANGEFROMWITHINTHESAMEINSTANCETHEOBSERVABLEPARAMMAPPROPERTYHANDLESTHATBEAUTIFULLY",
"original": "Unfortunately, `ngOnInit` is only called once per component instantiation.\nYou need a way to detect when the route parameters change from _within the same instance_.\nThe observable `paramMap` property handles that beautifully.",
- "translation": "不幸的是,`ngOnInit` 对每个实例只调用一次。\n 你需要一种方式来检测*在同一个实例中*路由参数什么时候发生了变化。\n 而 `params` 属性这个可观察对象(Observable)干净漂亮的处理了这种情况。",
+ "translation": "不幸的是,`ngOnInit` 对每个实例只调用一次。\n 你需要一种方式来检测*在同一个实例中*路由参数什么时候发生了变化。\n 而 `params` 属性这个可观察对象(Observable)干净漂亮地处理了这种情况。",
"sourceFile": "/Users/twer/private/GDE/angular-cn/aio/content/guide/router.md"
},
{
@@ -29450,7 +29450,7 @@
{
"key": "ASYOUVEWORKEDTHROUGHTHEMILESTONESTHEAPPLICATIONHASNATURALLYGOTTENLARGERASYOUCONTINUETOBUILDOUTFEATUREAREASTHEOVERALLAPPLICATIONSIZEWILLCONTINUETOGROWATSOMEPOINTYOULLREACHATIPPINGPOINTWHERETHEAPPLICATIONTAKESLONGTIMETOLOAD",
"original": "As you've worked through the milestones, the application has naturally gotten larger.\nAs you continue to build out feature areas, the overall application size will continue to grow.\nAt some point you'll reach a tipping point where the application takes long time to load.",
- "translation": "完成上面的里程碑后,应用程序很自然的长大了。在继续构建特征区的过程中,应用的尺寸将会变得更大。在某一个时间点,你将达到一个顶点,应用将会需要过多的时间来加载。",
+ "translation": "完成上面的里程碑后,应用程序很自然地长大了。在继续构建特征区的过程中,应用的尺寸将会变得更大。在某一个时间点,你将达到一个顶点,应用将会需要过多的时间来加载。",
"sourceFile": "/Users/twer/private/GDE/angular-cn/aio/content/guide/router.md"
},
{
@@ -51170,7 +51170,7 @@
{
"key": "THEHEROSERVICEMUSTWAITFORTHESERVERTORESPONDGETHEROESCANNOTRETURNIMMEDIATELYWITHHERODATAANDTHEBROWSERWILLNOTBLOCKWHILETHESERVICEWAITS",
"original": "The `HeroService` must wait for the server to respond,\n`getHeroes()` cannot return immediately with hero data,\nand the browser will not block while the service waits.",
- "translation": "`HeroService` 必须等服务器给出相应,\n而 `getHeroes()` 不能立即返回英雄数据,\n浏览器也不会在该服务等待期间停止响应。",
+ "translation": "`HeroService` 必须等服务器给出响应,\n而 `getHeroes()` 不能立即返回英雄数据,\n浏览器也不会在该服务等待期间停止响应。",
"sourceFile": "/Users/twer/private/GDE/angular-cn/aio/content/tutorial/toh-pt4.md"
},
{
@@ -51470,7 +51470,7 @@
{
"key": "THENGIFONLYDISPLAYSTHEMESSAGESAREAIFTHEREAREMESSAGESTOSHOW",
"original": "* The `*ngIf` only displays the messages area if there are messages to show.",
- "translation": "`*ngIf` 只有当在有消息时才会显示消息区。",
+ "translation": "`*ngIf` 只有在有消息时才会显示消息区。",
"sourceFile": "/Users/twer/private/GDE/angular-cn/aio/content/tutorial/toh-pt4.md"
},
{