WOVNswift クラス
WOVN クラスでは以下のメソッドを提供しています。
目次
最新の機能
- Wovn.changeLang(lang: String, function)
- Wovn.changeToSystemLang(function)
- Wovn.eventTypeReport(isDebugMode: Bool?)
- Wovn.getCurrentLangCode() -> String?
- Wovn.getWovnStatus() -> WovnStatus
- Wovn.translate(src: String, screenName: String) -> String
-
Wovn.translate(navigationItem: UINavigationItem, screenName: String?, completionHandler: function)
- Wovn.translate(navigationItem: UINavigationItem, viewController: UIViewController, completionHandler: function)
- Wovn.translateView(view: UIView, screenName: String?, completionHandler: function)
- Wovn.translateView(view: UIView, viewController: UIViewController, completionHandler: function)
非推奨の機能
- Wovn.addCallback(function)
- Wovn.async(screenName: string?, function)
- Wovn.changeLang(langs: String)
- Wovn.setImageUrl( _view: AnyObject, url: String, property: ImageProperty? = nil, scale: CGFloat = 1.0)
- Wovn.setImageUrl(button: UIButton, url: String, for state: UIControl.State, property: ImageProperty? = nil, scale: CGFloat = 1.0)
- Wovn.setImageUrl(segmentedControl: UISegmentedControl, url: String, at segment: Int, scale: CGFloat = 1.0)
- Wovn.setImageUrl(segmentedControl: UISegmentedControl, url: String, at segment: Int, scale: CGFloat = 1.0)
- Wovn.setPermission(permission: WovnPermission, enabled: Bool)
- Wovn.setSvgImageLoader(_ svgImageLoader: WovnSvgImageLoader)
- Wovn.translateInMainThread(src: string, ScreenName: string, timeoutMilliSec: int)
- Wovn.renameScreen(screenName: originalScreenName, newScreenName: newScreenName)
-
Wovn.setAsParentScreen(screenName: originalScreenName)
最新の機能
Wovn.changeLang(lang: String, function)
対応SDKバージョン: 3.0.0 ~
表示する言語を引数lang
で指定した任意の言語に変更します。
このメソッドが呼び出されると、SDK によって translateView またはEvent Reportingを使用して翻訳されたすべてのコンテンツが目的の言語に翻訳されます。
changeLang
実行後に任意の callback
を追加することができます。
メンバ | 型 | 説明 |
lang | Lang | 変更する任意の言語(言語地域コードの Code 列を参照) |
callback | function(String) |
Wovn.changeLang 実行後に起動する関数を追加できます。 戻り値としてエンドユーザが選択した言語の文字列を返却します |
```swift
Wovn.changeLang(lang: "en", callback: {result in
self.currentLangLabel.text = result
})
```
Wovn.changeToSystemLang()
対応SDKバージョン: 2.5.0 ~
表示する言語をアプリ利用端末側 OS 設定のシステム言語に変更します
このメソッドを実行後、translateView()
メソッドを実行する事で View が翻訳されます。
changeToSystemLang
実行後に任意のcallback
を追加することができます。
メンバ |
型 |
説明 |
callback |
function(String) |
戻り値としてエンドユーザが選択した言語の文字列を返却します |
```swift
Wovn.changeToSystemLang(callback: {result in
self.currentLangLabel.text = result
})
```
Wovn.eventTypeReport()
対応SDKバージョン: 2.0.0~
アプリに対して EventReporting を有効にします。
詳細は Event Reporting を設定して翻訳するを参照してください。
Wovn.getCurrentLangCode() -> String?
対応 SDK バージョン: 1.3.0~
現在適用されている言語の言語地域コードを返却します。返却される言語コードの一覧は言語地域コードの「Code」列を参照してください。
Wovn.getWovnStatus() -> WovnStatus
対応SDKバージョン: 1.1.2~
WOVN.app に関するステータスを取得できます。
ステータスは WovnStatus クラスによって返却されます。
メンバ | 型 | 説明 |
WovnStatus.wovnApp | Boolean | WOVN.app が利用可能か示します。 |
WovnStatus.offlineMode | Boolean | オフライン翻訳機能が利用可能か示します。 |
WovnStatus.cacheExpired |
Date |
端末に保存されている翻訳データの有効期限を示します。この日時を過ぎると、オフライン翻訳が動作しなくなります。 オフライン翻訳を利用するには、この日時になる前にネットワーク接続を行い、再度翻訳データをダウンロードする必要があります。 |
WovnStatus.offlineCacheSavedAt | Date | 最後に activateOfflineTranslation() を実行してオフライン翻訳データをダウンロードした日時を示します。 |
対応SDKバージョン: 1.6.0~
SDK バージョン 1.6.0 以降は、上記に加えて下記パラメーターが追加されました。
メンバ | 型 | 説明 |
WovnStatus.sourceLanguage | String | WOVN 管理画面で元言語として設定されている言語のコードです。 |
WovnStatus.languages | Set<String> |
WOVN SDK で翻訳可能な言語コードの Set です。 WOVN 管理画面で翻訳対象言語として設定されていて、1 つ以上のページで公開されているすべての言語コードが取得可能です。 |
```swift
// 言語リスト取得
let langs = wovnStatus.languages.sorted()
for lang in langs {
// ここでユーザが言語コードを選択できるような実装を行う
}
// 言語選択時の処理
let langCode = langs[pos]
Wovn.changeLang(langs: langCode)
```
Wovn.translate(string: String, screenName: String) -> String?
対応 SDK バージョン: 2.0.0~
テキストを翻訳出来ます。用語集の読み込みが完了している必要があります。
翻訳が準備される前に実行されると、元のテキストが返されます。
Wovn.translate(navigationItem: UINavigationItem, screenName: String?, completionHandler: function)
対応SDKバージョン: 1.5.0~
UINavigationItem を翻訳します。 NavigationTitle を翻訳するときに利用できます。
引数名 | 型 | 説明 |
navigationItem | UINavigationItem |
言語を切り替える対象の UINavigationItem です。 WOVN.io プロジェクトに通知する View 型オブジェクトです。 |
screenName | String? |
スクリーン名を任意の文字列で指定します。ここで指定したスクリーンが WOVN 管理画面上に存在しない場合、自動で新しいスクリーンを作成します。(設定の「自動ページ追加」機能が ON の場合) |
completionHandler | function |
省略可能。 |
注意
このメソッドを使用する場合、translateView() で UINavigationBar を翻訳しないでください。
translateView() の子孫コンポーネントに UINavigationBar が含まれていると、translate メソッドとtranslateView メソッドの 2 つから重複した翻訳をおこなってしまい、翻訳後のテキストが元言語としてレポートされてしまう可能性があります。
Wovn.translate(navigationItem: UINavigationItem, viewController: UIViewController, completionHandler: function)
対応SDKバージョン: 1.5.0~
UINavigationItem を翻訳します。 NavigationTitle を翻訳するときに利用できます。
引数名 | 型 | 説明 |
navigationItem | UINavigationItem |
言語を切り替える対象の UINavigationItem です。 WOVN.io プロジェクトに通知する View 型オブジェクトです。 |
viewController | UIViewController |
渡された UIViewController の Class 名を screenName として利用します。この Class 名に対応するスクリーンがWOVN 管理画面上に存在しない場合、自動で新しいスクリーンを作成します。(設定の「自動ページ追加」機能が ON の場合) |
completionHandler | function |
省略可能。 |
注意
このメソッドを使用する場合、translateView() で UINavigationBar を翻訳しないでください。
translateView() の子孫コンポーネントに UINavigationBar が含まれていると、translate メソッドと translateView メソッドの2つから重複した翻訳をおこなってしまい、翻訳後のテキストが元言語としてレポートされてしまう可能性があります。
Wovn.translateView(view: UIView, screenName: String?, completionHandler: function)
対応SDKバージョン: 1.9.0~
引数 view が保持するコンテンツを翻訳します。
View 内に子孫 View がある場合、その子孫 View も翻訳します。
また、引数 view が保持するコンテンツのテキストを WOVN.io へ送信します。
引数名 | 型 | 説明 |
view | UIView |
言語を切り替える対象の UIView 型オブジェクトです。 WOVN.io プロジェクトに通知する UIView 型オブジェクトです。 |
screenName | String? |
スクリーン名を任意の文字列で指定します。ここで指定したスクリーンが WOVN 管理画面上に存在しない場合、自動で新しいスクリーンを作成します。(設定の「自動ページ追加」機能が ON の場合) |
completionHandler | function |
省略可能。 |
注意
引数 sceenName が指定出来るのは半角英数字のみです。
注意
translateView で翻訳済みのテキストに対して値を代入する事は避けてください。
SDK側では翻訳されたテキストなのか、翻訳前のテキストが判断がつかなくなる為、
値の再代入後に translateView を実行しても翻訳される事はありません。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String screenName = getClass().getSimpleName()
View mainView = getWindow().getDecorView().getRootView()
Wovn.translateView(mainView, screenName);
}
Wovn.translateView(view: UIView, viewController: UIViewController, completionHandler: function)
対応SDKバージョン: 1.9.0~
引数view
が保持するコンテンツを翻訳します。
View 内に子孫 View がある場合、その子孫 View も翻訳します。
また、引数view
が保持するコンテンツのテキストを WOVN.io へ送信します。
引数名 | 型 | 説明 |
view | UIView |
言語を切り替える対象の View 型オブジェクトです。 WOVN.io プロジェクトに通知する View 型オブジェクトです。 |
viewController | UIViewController |
渡された UIViewController の Class 名を screenName として利用します。この Class 名に対応するスクリーンが WOVN 管理画面上に存在しない場合、自動で新しいスクリーンを作成します。(設定の「自動ページ追加」機能が ON の場合) |
completionHandler | function |
省略可能。 |
注意
translateView で翻訳済みのテキストに対して値を代入する事は避けてください。
SDK 側では翻訳されたテキストなのか、翻訳前のテキストが判断がつかなくなる為、
値の再代入後に translateView を実行しても翻訳される事はありません。
非推奨の機能
Wovn.addCallback(function)
対応 SDK バージョン: 1.3.0~
注意
このメソッドはバージョン 3.0.0 以降では非推奨になりました。代わりに Wovn.translate( を使用してください。
Wovn.translateView
メソッドによる翻訳の完了後、予めこのメソッドによって予約されたメソッドが実行されます。translateView
メソッドが呼ばれる前にこのメソッドが実行されている必要があります。
このメソッドでは、WOVNswift.WovnCallbackParameters
クラスのプロパティとして 4 つのパラメータが提供されています。
プロパティ名 | 内容 |
target |
translateView メソッドで呼ばれた View 単体 |
state | UIButton の state.rawValue |
src | View が持つ元テキスト |
dst | View が持つ対訳テキスト |
langCode | View の持つ現在の言語コード |
```swift
Wovn.addCallback { param in
if param.src != param.dst {
print("WOVN-demo", param.langCode, param.state, param.target,
"translated :", param.src, " -> ", param.dst)
}
}
```
Wovn.async(function)
対応SDKバージョン: 1.11.0~
注意
このメソッドはバージョン 3.0.0 以降では非推奨になりました。代わりに Wovn.translateを使用してください。
WOVNに登録されている翻訳を返すためのWovnClient
クラスを返却します。
返却されたWovnClient.translate
を使って、テキストを翻訳出来ます。
push通知など、その場で翻訳する必要が有る場合に使用します。
メンバ | 型 | 説明 |
screenName | String? | 省略可能。 表示されている画面を識別する為の名前です。WOVN.io プロジェクト上の screen 名と一致している必要があります。 |
callback | function |
任意の文字列を翻訳するための function です。 Wovn SDK の初期化が完了し、screenName に該当する翻訳データのダウンロードが出来たタイミングで callback されます。 |
- 文字列を翻訳する
```swift
Wovn.async(screenName: "asyncScreen") { client in
print("WOVN-demo", "translated text :", client.translate(src: "hello") ?? "-")
}
```
- ダイアログを翻訳する
```swift
Wovn.async(screenName: screenName) { wovn in
let title = wovn.translate(src: "Async Alert") ?? "Async Alert"
let message = wovn.translate(src: "message") ?? "message"
let alert: UIAlertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
let defaultAction: UIAlertAction = UIAlertAction(title: ok, style: UIAlertAction.Style.default, handler: { (_: UIAlertAction) -> Void in
print("OK")
})
let cancelAction: UIAlertAction = UIAlertAction(title: cancel, style: UIAlertAction.Style.cancel, handler: { (_: UIAlertAction) -> Void in
print("Cancel")
})
alert.addAction(cancelAction)
alert.addAction(defaultAction)
self.present(alert, animated: true, completion: nil)
}
```
Wovn.changeLang(langs: String)
対応SDKバージョン: 2.5.0 ~
表示する言語を引数langs
で指定した任意の言語に変更します。
このメソッドを実行後、translateView()
メソッドを実行する事で View が翻訳されます。
changeLang
実行後に任意の callback
を追加することができます。
メンバ | 型 | 説明 |
langs | Lang | 変更する任意の言語(言語地域コードの Code 列を参照) |
callback | function(String) |
Wovn.changeLang 実行後に起動する関数を追加できます。 戻り値としてエンドユーザが選択した言語の文字列を返却します |
```swift
Wovn.changeLang(langs: lang, callback: {result in
self.currentLangLabel.text = result
})
```
Wovn.setImageUrl( _view: AnyObject, url: String, property: ImageProperty? = nil, scale: CGFloat = 1.0)
対応SDKバージョン: 1.0.0~
引数view
が保持する画像コンテンツを WOVN.io へ送信します。
引数名 | 型 | 説明 |
view |
AnyObject サポート対象
|
WOVN.io プロジェクトに通知する画像オブジェクト |
url | String |
置換対象画像の URL 。 |
property | enum(ImageProperty) |
オブジェクトのどの画像の URL かを指定します。 UIImageView.image, UIBarAppearance.image の場合は省略可能です。 |
scale | CGFloat |
|
注意
置換元画像がインターネット上に公開されておらず、画像 URL が用意できない場合は正規の画像としてレポート送信出来ません。
ImageView imageView = view.findViewById(R.id.LayoutComponents_Image_Delete);
if (imageView != null) {
String url = WovnBaseActivity.S3_BUCKET_URL + "views_activity_stack_view2.png";
// NOTE: url is the link to original image. It could be AWS_S3, GCS, or anywhere else.
Wovn.setImageUrl(imageView, url);
}
Wovn.setImageUrl(button: UIButton, url: String, for state: UIControl.State, property: ImageProperty? = nil, scale: CGFloat = 1.0)
対応 SDK バージョン: 1.0.0~
引数 button が保持する画像コンテンツを WOVN.io へ送信します。
引数名 | 型 | 説明 |
button | UIButton | WOVN.io プロジェクトに通知する画像オブジェクト |
url | String | 置換対象画像の URL です。 これは WOVN.io で管理を行う為のパラメータです。imageView で指定する画像と一致している必要があります。インターネット上からアクセスできる画像の URL です。 |
state | UIControl.State |
画像が表示される UIButtonのState |
property | enum(ImageProperty) |
image の場合は省略可能です。 |
scale | CGFloat |
url にアップロードした画像の scale を設定してください。 |
Wovn.setImageUrl(segmentedControl: UISegmentedControl, url: String, at segment: Int, scale: CGFloat = 1.0)
対応 SDK バージョン: 1.0.0~
引数 segmentedControl が保持する画像コンテンツを WOVN.io へ送信します。
引数名 | 型 | 説明 |
segmentedControl | UISegmentedControl | WOVN.io プロジェクトに通知する画像オブジェクト |
url | String | 置換対象画像の URL です。 これは WOVN.io で管理を行う為のパラメータです。imageView で指定する画像と一致している必要があります。インターネット上からアクセスできる画像の URL です。 |
segment | Int |
画像が表示される segmentのindex |
scale | CGFloat |
url にアップロードした画像の scale を設定してください。 |
Wovn.setPermission(permission: WovnPermission, enabled: Bool)
対応 SDK バージョン: 1.12.0~ 2.1.0~
report, dynamic loading, error report 機能でのデータ送信について、アプリ利用ユーザの同意有無を設定します。
詳細は Data Safety について を参照してください。
引数名 | 型 | 説明 |
permission | WovnPermission |
アプリ利用ユーザーの許可有無を設定する機能を指定します。
|
enabled | Bool |
アプリユーザー同意結果を指定します。 true:同意 false:拒否 |
Wovn.setSvgImageLoader(_ svgImageLoader: WovnSvgImageLoader)
対応 SDK バージョン: 1.0.0~
SVG 画像翻訳を行うための Image Loader を設定してください。
引数名 | 型 | 説明 |
svgImageLoader | WovnSvgImageLoader |
WovnSvgImageLoader protocol を継承したClass を設定してください。 その Class を用いて SVG 画像翻訳を行います。 |
Wovn. translateInMainThread (src: string, ScreenName: string, timeoutMilliSec: int)
対応SDKバージョン: 2.5.0 ~
文字列を WOVN に送信し、指定した ScreenName に保存し、翻訳結果を受け取ります。
通常の SDK の翻訳処理との違いは、バックエンドではなくメインスレッドで実行することです。
これによりアプリの処理タイミングの違いで翻訳後の文字列が上書きされたり翻訳すべき文字列が翻訳できない状況を防ぐことができます。
また、timeoutMilliSec
オプションを使用することで翻訳情報がない場合にタイムアウトする(ソース言語を表示する)ことができます。
引数名 | 型 | 説明 |
src |
String |
翻訳対象の文字列 |
ScreenName |
String |
送信先のスクリーン名 |
(Optional) timeoutMilliSec |
Int |
オプション)タイムアウト値。100ms を推奨。 |
```swift
selectLabel.text = Wovn.translateInMainThread(src: "Hello", 2 screenName:"TranslateInMainThread", 3 timeoutMilliSec: 100)
```
Wovn.renameScreen(screenName: originalScreenName, newScreenName: newScreenName)
対応SDKバージョン: 2.6.0 ~
レポート先の CACHE NAME を任意の名前に変更します。
引数名 | 型 | 説明 |
screenName |
String |
オリジナルの ScreenName |
newScreenName |
String |
新しい ScreenName |
Wovn.setAsParentScreen(screenName: originalScreenName)
対応SDKバージョン: 2.6.0 ~
指定した ScreenName を親 Screen と、グルーピングの単位から独立した CACHE NAME を作成します。
ScreenGroupingByRelation 機能をONにする必要があります。
引数名 | 型 | 説明 |
screenName |
String |
オリジナルの ScreenName |