模组:模板字符串
← 目录
不完整的翻译 本文或部分尚未完全翻译成中文。
欢迎您通过编辑帮助其建设。 |
本页面描述了 模板字符串,即一种内置的构建显示文本的方法,该文本可以包含任意组合的纯文本、翻译和占位符值。
格式
综述
您只能在允许使用模板字符串的数据字段中使用模板字符串(这些数据字段会在本百科文档中给出)。
一个模板字符串可以包括纯文本和下述标记的任意组合。例如:
"Dialogue": "欢迎光临皮埃尔的杂货店![FarmName]最近怎么样?"
当使用Content Patcher时,你可以在字符串的任何位置使用其标记(包括方括号内部);它们将在游戏解析字符串之前完全展开。例如,"{{Spouse}} 会喜欢 [ArticleFor [SuggestedItem]] [SuggestedItem]!"
会输出"Abigail would love an Apple!"(此处放置英文原文便于理解)。
标记格式
“标记”是预定义的、用于生成文本的占位符,它们包裹在方括号中。标记名称并不大小写敏感,所以[LocalizedText]和[LOCALIZEDTEXT]是相同的标记。
例如,下面内容会在英语环境下生成"Welcome to Pierre's! This is raw text":
"Dialogue": "[LocalizedText Strings\StringsFromCSFiles:ShopMenu.cs.11488] {{i18n: some-translation}}"
标记参数格式
标记可以包含参数(参数也可包含标记)。在上面的例子中,LocalizedText具有一个参数(欲显示的翻译键)。参数使用空格分隔,因此需要使用EscapedText传入包含空格的参数:
"Dialogue": "[LocalizedText [EscapedText Strings\BundleNames:Quality Fish]]"
标记
下面列出了原版游戏支持的标记:
标记格式 | 输出 |
---|---|
[AchievementName <id> ]
|
某个成就在当前语言下的名称。成就参见Data/Achievements。例如,[AchievementName 5]会在英语环境下输出A Complete Collection。 |
[ArticleFor <word> ]
|
英语中的不定冠词(a or an)。在其他语言环境下为空白。 例如,[ArticleFor apple] apple 输出an apple。
|
[CharacterName <name> ]
|
根据角色的内部名称显示其在当前语言下的名词。 |
[DayOfMonth] | 显示当月几日,例如在春5日显示5。 |
[EscapedText] [EscapedText <text> ]
|
将文本片段视为单个参数,所以即使该片段为空或包含空格,也能被安全地传入其他标记中。
例如,SpouseFarmerText需要空格隔开的两个参数。下面的代码将向第一个参数传入空字符串,向第二个参数传入含空格的文本: [SpouseFarmerText [EscapedText] [EscapedText spouse 28 63 2]] |
[FarmerUniqueID] | 目标玩家唯一的内部多人ID。 |
[FarmName] | 当前存档的农场名(不包含后面的“农场”二字) |
[FarmerStat <key> ]
|
当前玩家的被跟踪的状态。欲获得详细状态列表,参见PLAYER_STAT game state query。
例如: "你目前已经走了[FarmerStat stepsTaken]步了。"
|
[GenderedText <male text> <female text> ]
|
根据玩家的性别显示不同文本。若包含空格,须使用EscapedText。 |
[ItemName <id> [fallback text] ]
|
根据一个物品的限定ID或非限定ID,显示其在当前语言下的物品名称。例如,[ItemName (O)128]会在中文语境下显示“河豚”。
若该物品不存在,且指定了 |
[LocalizedText <string key> ][LocalizedText <string key> <token values> +]
|
通过翻译键给出翻译后的文本。如果翻译中包含诸如{0}的占位符,您可以在字符串键后面添加其值。 |
[LocationName <location ID> ]
|
通过Data/Locations中的地点ID给出翻译后的地点名。 |
[MovieName <id> ]
|
The translated display name for a movie from Data/Movies. For example, [MovieName spring_movie_0] will output The Brave Little Sapling in English. |
[NumberWithSeparators <number> ]
|
Format a number with thousands separators based on the current language. For example, [NumberWithSeparators 5000000] will output 5,000,000 in English. |
[PositiveAdjective] | A random adjective from the Strings\Lexicon data asset's RandomPositiveAdjective_PlaceOrEvent entry. |
[Season] | The current season name, like spring. |
[SpecialOrderName <id> ]
|
The translated display name for a special order from Data/SpecialOrders. If the special order is currently active, it'll show the same name shown in the quest log. For example, [SpecialOrder Caroline] will output Island Ingredients in English. |
[SpouseFarmerText <spouse is farmer text> <spouse is NPC text>
|
Show a different text depending on whether the target player's spouse is a player or NPC. If the text contains spaces, you'll need to escape them using EscapedText. |
[SpouseGenderedText <male text> <female text> ]
|
Equivalent to GenderedText, but based on the gender of the player's NPC or player spouse instead. |
[SuggestedItem [interval] [sync key] ]
|
(For shops only.) The name of a random item currently available in the shop stock.
The result will be identical for all queries with the same |
[ToolName <id> [upgrade level] ]
|
The translated display name for a tool, including its upgrade level if specified. For example, [ToolName (T)IridiumAxe] will output Iridium Axe in English. |
Extensibility for C# mods
- C# mods can define custom tokens by calling
TokenParser.RegisterParser("tokenName", ...)
. To avoid conflicts, custom token names should apply the unique string ID conventions. - The TokenStringBuilder class provides methods for creating token strings. For example,
TokenStringBuilder.ItemNameFor(item)
will produce a string like[ItemName (O)128]
orItemNameWithFlavor SmokedFish (O)128]
.