在 swift 包中重用字符串目录翻译

问题描述 投票:0回答:1

设置

我有 2 个 swift 软件包,我尝试使用 Stirng 目录来管理你的本地化

我想使用这些包中的一些特定键和一些常见键(例如“ok_button_tittle”)

问题陈述

我真的不喜欢在这些包中创建单独(但相同)翻译的想法

我尝试过使用类似的东西

String(
            localized: "ok_button_title",
            table: "Localizable",
            bundle: .main,
            comment: "Ok button title"
)

这确实使用了主包的翻译,但是这不会自动在字符串目录中创建键

问题

是否有可能重用主包中的翻译? 也许有一个技巧可以让密钥自动出现在正确的包中?还是bug?

swift xcode localization swift-package-manager string-catalog
1个回答
0
投票

为了使用字符串目录

.xcstrings
在 Swift 包中进行翻译,您必须使用捆绑包
.module

如果您还想使用

String(localized:table:bundle:comment)
,您的 Swift 包必须使用
// swift-tools-version: 6.0
Package.swift
文件中设置。

因此,例如,您必须使用表名称创建一个

.xcstrings
文件。对于此示例,我们将使用表名称
Shared

  • 创建一个名为
    Shared.xcstrings
  • 的文件
  • 通过以下方式将翻译密钥添加到 Swift 包中: (我鼓励您在枚举中添加密钥,因为它很容易检索并且更干净)。
enum L10n {

  static let okButtonTitle = String(
    localized: "ok_button_title",
    table: "Shared", // The name of the table that must match the name of the `.xcstrings` file.
    bundle: .module, // The bundle is module for Swift Package.
    comment: "Ok button title"
  )
}

因此,要检索项目中的值,请调用

L10n

let buttonTitle = L10n.okButtonTitle
© www.soinside.com 2019 - 2024. All rights reserved.