Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

增加NSHipster文章xcconfig翻译 #300

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

ericchuhong
Copy link

@ericchuhong ericchuhong commented Apr 6, 2020

这篇文章对应的 Issue 链接是:
#294
本文的大致阅读时长:[15 ] 分钟。

PR Checklist:

请校对同学帮忙校对。

Copy link
Collaborator

@Nemocdz Nemocdz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

一次校对


<!--此处开始正文-->

软件开发最佳实践中 [规定](https://12factor.net/config) 配置要与代码分离。但是在 Apple 平台的开发者经常努力使这些规范与 Xcode 繁重的项目工作流保持一致。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

努力使这些规范与 Xcode 繁重的项目工作流保持一致 -> 需要花很大力气将这些规范和 Xcode 繁重的项目工作流整合起来


软件开发最佳实践中 [规定](https://12factor.net/config) 配置要与代码分离。但是在 Apple 平台的开发者经常努力使这些规范与 Xcode 繁重的项目工作流保持一致。

了解每个项目设置的作用是什么,以及它们间是如何相互影响的,是一项需要多年磨练的技能。而事实上,无论在 Xcode 的 GUI 上做多么深入的研究,都对我们没帮助。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在 Xcode 的 GUI 上做多么深入的研究 -> 在 Xcode 的 GUI 上研究多么深入


* * *

[Xcode 编译配置文件](https://help.apple.com/xcode/mac/8.3/#/dev745c5c974),更常见的是它们的 `xcconfig` 文件扩展,可以让你不用 Xcode 就能 声明和管理你应用的编译设置。它们是纯文本,意味着它们对版本管理系统更加友好,并且能被任意编辑器修改。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

更常见的是 -> 更常被大家所认知的是


* * *

[Xcode 编译配置文件](https://help.apple.com/xcode/mac/8.3/#/dev745c5c974),更常见的是它们的 `xcconfig` 文件扩展,可以让你不用 Xcode 就能 声明和管理你应用的编译设置。它们是纯文本,意味着它们对版本管理系统更加友好,并且能被任意编辑器修改。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

就能 声明,中间有个括号

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

应该是想说空格


[Xcode 编译配置文件](https://help.apple.com/xcode/mac/8.3/#/dev745c5c974),更常见的是它们的 `xcconfig` 文件扩展,可以让你不用 Xcode 就能 声明和管理你应用的编译设置。它们是纯文本,意味着它们对版本管理系统更加友好,并且能被任意编辑器修改。

基本说来,每一个配置文件包含了一组带有以下语法的键值对:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

基本说来 -> 通常来首

#include "<#path/to/File.xcconfig#>"
```

正如我们将在本文后面看到的,你可以利用这一点,以非常强大的方式构建编译设置的级联列表。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在下文会看到

```
通常当编译器遇到无法解析的 `include` 指令时,它会抛出异常。但是 `xcconfig` 文件也支持 `#include?` 指令,如果找不到文件则不会有任何问题。

在很多情况下,你不会希望文件的存在与否会改变编译时的行为;毕竟,在编译时就可被预测才是最好的方式。但你可以在类似 [Reveal](https://revealapp.com/) 这样的可选开发工作中,将其做为 hook 使用。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

但你可以在类似 Reveal 这样的可选开发工作中 -> 但你可以用它来为像 Reveal 这类可选开发工具实现一个 hook,使用下面的配置


![xcconfig-project-configurations--light](https://nshipster.com/assets/xcconfig-project-configurations--light-a82440e27f27e3b139ab51c7317780c6b4a017dfcc56532972da5d521f1f0988.png)

> 编译配置文件不应该被包含在你的任一项目 targets 中。如果你在应用的 `.ipa` 归档文件中发现 `.xcconfig` 文件,确保它们不是任何 targets 的配置文件,并且确保其不会出现在任何一个 "Copy Bundle Resources" 构建阶段。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

任何一个 -> 任何的...中


> `xcconfig` 将 `//` 视为注释分隔符, 不管它是否被括在引号中。如果你尝试用反斜杠 `/\/` 进行转义,那这些反斜杠只会按字面描述进行显示,但在处理后的值中又必须将其删除。当需要指定每个环境的 URL 常量时,这尤其不方便。

> 如果你不想处理这种不幸的行为,则可以省略该方案并在代码中预先改成 `https://`。_(你是有在用 https... 对吧?)_
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

你是有在用 -> 你应该在用...的吧?


* * *

Xcode 的各个项目程序是庞大而僵化的、不稳定而且封闭的。它们是团队成员之间协作的矛盾源,并且经常成为我们工作的阻力。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Xcode 的项目是大型集中化的,但脆弱又封闭。

Copy link
Collaborator

@Nemocdz Nemocdz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

还有一处需要修改


<!--more-->

打开项目编辑器的 “Build Settings” 标签,你会看到 _上百条_ 编译设置,其中含括了有 project、targets 和配置 -- _更不用说其他的_ _6_ _个标签了!_
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

上百条前后无需空格,--前后无需空格,切破折号用的不是中文,下文同

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我说下文同是让你全文检查一遍呀,我记得不止一处的

![xcconfig-project-build-settings--light](https://nshipster.com/assets/xcconfig-project-build-settings--light-f7043782f0b56d637bec89eefa0d37939b38ef33f55c293e326d3fecbc06df49.png)

还好我们有一个更好的方式来管理这些配置,而不用点击迷宫般的标签和一个个箭头。
这一周,我们会给你展示如何使用基于文本的 `xcconfig` 文件,来表示 Xcode 中的编译设置,从而让你的项目具有更好的内聚性、更清晰易懂,也更加强大。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这两段之间需要空行隔开,否则会被合并成一段。


* * *

[Xcode 编译配置文件](https://help.apple.com/xcode/mac/8.3/#/dev745c5c974),更常被大家所认知的是它们的 `xcconfig` 文件扩展,可以让你不用 Xcode 就能声明和管理你应用的编译设置。它们是纯文本,意味着它们对版本管理系统更加友好,并且能被任意编辑器修改。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

更常被大家所认知的是它们的 => 也就是我们熟悉的


![xcconfig-new-file--light](https://nshipster.com/assets/xcconfig-new-file--light-1569134f8ecaeaee6640f28e544443da0136ff72b00f9343126147934ac134d4.png)

一旦你创建好了一份 `xcconfig` 文件,你可以在它关联 target 中,分配给它一份或者多份编译配置。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

去掉第二个”你“


* * *

既然我们已经介绍了使用 Xcode 编译配置文件的基本知识,那么让我们来看几个示例,说明一下如何使用它们来管理开发、阶段和生产环境。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

那么让我们来 => 接下来

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

开发、阶段和生产环境

stage 并不是阶段,一般是表示测试或者预上线环境,和生产环境做对应。我个人比较倾向于翻译成预上线。


## 自定义内部版本的应用程序名称和图标

开发 iOS 应用通常需要在模拟器和测试设备上处理各种内部版本(以及 App Store 的最新版本作为参考)。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

以及 App Store 的最新版本作为参考 => 当然还包括 App Store 上的最新版本


开发 iOS 应用通常需要在模拟器和测试设备上处理各种内部版本(以及 App Store 的最新版本作为参考)。

您可以使用 `xcconfig` 文件简化您的工作,它会给每个配置分配一个不同的名称和应用图标。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

全文的”您“和”你“要统一,一般全部翻译成”你“。


## 跨环境管理常量

如果你的后端开发人员们按前面提到的 [12 Factor App](https://12factor.net/confi))那样做,那么他们将会有独立的终端用于开发、阶段和生产的环境。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

你的后端开发人员们 => 后端开发人员

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里还是 stage 的翻译问题,和前面统一一下。


Xcode 的项目是大型集中化的,但脆弱又封闭。它们是团队成员之间协作的矛盾源,并且经常成为我们工作的阻力。

幸运的是,`xcconfig` 在很大程度上解决了这些问题。将配置从 Xcode 中移到 `xcconfig` 会带来很多好处,也提供了一种隔离项目和 Xcode 工作流的方式,同时不会偏离 Cupertino 允许的 “康庄大道”。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

引号和中文之间不需要空格。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants