OneSky 1.2.3

OneSky 1.2.3

DanniilVorobyevOneSky 维护。



 
依赖项
Siesta~> 1.3.0
Ably>= 0
 

OneSky 1.2.3

  • 作者:
  • OneSky

OneSky SDK

在线本地化解决方案。

One Sky 管理员实现 iOS 应用的在线本地化。SDK 只需简单地在您的应用中创建 .strings 文件。

您可以在这里观看视频

Watch the video

功能

  • Swift 4.1
  • Cocoapods
  • Xcode 9

要求

  • iOS 10.0+
  • Xcode 8.0+

安装

CocoaPods

您可以使用 CocoaPods 通过将其添加到您的 Podfile 中来安装 OneSky

platform :ios, '10.0'
use_frameworks!
pod 'OneSky', :podspec => '/Users/{yourUser}/{yourProject}/onesky-sdk-ios'

因为这个仓库是私有的,所以我不能完全将其上传到 Cocoapods,但现在它正在使用 Cocoapods。

下载此项目,了解项目 .podspec 文件所在的路径:'/Users/{你的用户名}/{你的项目}/onesky-sdk-ios'

这将通过您的本地 .podspec 文件使用 Cocoapods 下载框架。

为了获得全部好处,请导入 OneSky

import OneSky

使用示例

使用框架有两种方式。两种情况都需要你实现

fileprivate var localizationManager: OneSkyManager? = OneSkySource()

你应该在 override func viewWillAppear(animated:) 函数中实现本地化,如

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        firstLabel.text = "top".localized
        secondLabel.text = "ask".localized
        ...
    }

其中 .localized 扩展是我们框架的特性。

然后

  • 带 UI

如果您要使用框架自定义设置UI,那么您需要在按钮处理程序中实现以下代码。

  // your Button handler
 func buttonPressed() {
   localizationManager?.open(from: self, style: .push)
 }

此代码实现了打开OneSky自定义UI的委托方法。支持的样式有

  • .push - 实现代码push展示风格(您的viewController应有navigationController在栈中)
  • .present - 实现简单的present展示风格
如果需要使用userId,请写下以下代码
// your Button handler
func buttonPressed() {
  localizationManager?.open(from: self, style: .push, userId: userId) // where userId: Int value of your user id 
}

不需要做任何其他事情。框架将自行处理一切。

  • 仅存储端点

如果您只想使用存储端点,以下是一些可用的委托方法的简要指南。

  • weak var delegate: OneSkyDelegate? { get set } - 实现委托,该委托实现SDK返回的代码中的方法。更多细节可以在代码中的文档中找到。

  • var currentLanguageCode: String? { get } - 返回当前设备语言地区代码

  • func getAvailableLocales() - 对通用应用程序配置进行请求。目前使用硬编码的AppId

  • func getUserPreferences(with userId: Int) - 对特定用户的偏好进行请求。

  • func sendUserSettings(with userId: Int, preferences: UserSettings) - 向上传特定用户偏好的POST请求。也可以用它来创建新用户!

  • func translate(locale: Locales) - 翻译文本并在新的Bundle中保存新的.strings文件。您必须在函数参数中传递Locales结构。结构应该实现您要翻译的语言。

离线工作

实际上,您的应用程序在编译阶段下载配置文件和地区。为了配置离线模式,您必须

  • 构建阶段中添加运行脚本
    MYFILE=${SRCROOT}/OneSkyTestApp/Modules/Api/configuration.json
curl -o $MYFILE https://app-api.oneskyhq-stag.com/v1/apps/cfad03c9-0071-4de4-a58c-71a0d4cd9f31 #route
cp "${SRCROOT}/OneSkyTestApp/Modules/Api/configuration.json"  "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/configuration.json"

其中cfad03c9-0071-4de4-a58c-71a0d4cd9f31是您的应用ID,而/OneSkyTestApp/Modules/Api/则是您想要保存配置文件的路径。

  • 构建阶段中添加另一脚本
    php ./OneSkyTestApp/Modules/API/configuration.php -- "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"

其中configuration.php是预先准备好的文件。在您的configuration.php文件中复制以下代码

    <?php
    $arg = $argv[2];
    echo "arg = " . $arg . "\n";
    $json_url = "https://app-api.oneskyhq-stag.com/v1/apps/cfad03c9-0071-4de4-a58c-71a0d4cd9f31";
    $json = file_get_contents($json_url);
    $data = json_decode($json, TRUE);
    $localesArray = array();
    $locales = $data['app']['selectors'][0]['locales'];
    foreach($locales as $item) {
        array_push($localesArray, $item['id']);
    }
    
    print_r($localesArray);

    # now get string files
    $new_url = "https://app-api.oneskyhq-stag.com/v1/apps/cfad03c9-0071-4de4-a58c-71a0d4cd9f31/string-files?fileFormat=ios-strings&languageId=";

    foreach($localesArray as $id) {
        $url = $new_url . $id;
        $data = file_get_contents($url);
        echo "data = " . $data . "\n";
        file_put_contents($arg . 'Localizable-' . $id . '.strings', $data);
    }
?>

其中cfad03c9-0071-4de4-a58c-71a0d4cd9f31是您的应用ID。这就完成了!

在主文件夹中的 Hacker-master 项目中可以看到使用示例。