Transifex
Transifex は、あらゆる言語で、ユーザー群にわたる強力なローカライゼーションを支援しています。
BrazeとTransifexの統合は、Connected Contentを活用することで、リソース文字列コレクションを引き出し、言語ベースの条件付き書式の行の代わりに、関連する翻訳をメッセージに含めることができる。これにより、翻訳が自動化され、チームは優れたカスタマー・エクスペリエンスの提供に集中することができる。
2022年4月7日をもって、Transifex は API バージョン2と2.5を廃止し、バージョン3に移行しました。バージョン2と2.5は動作せず、関連するリクエストは失敗します。
以下の統合手順は、バージョン3のアップデートを反映したものである。コネクテッドコンテンツ呼び出しを適宜更新します。
前提条件
必要条件 | 説明 |
---|---|
トランシフェックス アカウント | このパートナーシップを活用するには、Transifexアカウントが必要です。 |
統合
Transifex 統合では、Transifex のリソース翻訳 API を使用します。次の cURL を使用すると、翻訳に関連付けられたコンテンツ値がアカウントにあるかどうかを確認できます。
まず、Transifexアカウントにある <ORGANIZATION_NAME>
、<PROJECT_NAME>
、<RESOURCE_NAME>
を入力します。次に、<LANGUAGE>
を翻訳をフィルタリングしたい言語コードに、<TRANSIFEX_BEARER_TOKEN>
をTransifexのベアラートークンに置き換える。
1
2
3
4
curl --request GET \
--url 'https://rest.api.transifex.com/resource_translations?filter\[resource\]=o:<ORGANIZATION_NAME>:p:<PROJECT_NAME>:r:<RESOURCE_NAME>&filter\[language\]=l:<LANGUAGE>' \
--header 'Accept: application/vnd.api+json' \
--header 'Authorization: Bearer 1/c500429f7b89ff62b8015475ed68d90a2295302'
例えば、Transifexプロジェクトがhttps://www.transifex.com/appboy-3/french2/french_translationspo/
にある場合、project_name
は “french2”、resource_name
は “french_translationspo “となる。
コネクテッドコンテンツメッセージの例
このコード例は、Transifexリソース翻訳APIとユーザーのlanguage
属性を利用している。必要に応じて文字列オブジェクトをループし、Liquid `` を使用して関連するコンテンツを取得できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{% assign organization = "<ORGANIZATION_NAME>" %}
{% assign project = "<PROJECT_NAME>" %}
{% assign resource = "<RESOURCE_NAME>" %}
{% if {{${language}}} == "en" or {{${language}}} == "it" or {{${language}}} == "de" or {{${language}}} == "another_language_you_support" %}
{% connected_content
https://rest.api.transifex.com/resource_translations?filter[resource]=o:{{organization}}:p:{{project}}:r:{{resource}}&filter[language]=l:{{${language}}}
:method GET
:headers {
"Authorization": "Bearer <TRANSIFEX_BEARER_TOKEN>"
}
:accept application/vnd.api+json
:save strings
%}
{% endif %}
{% if {{strings}} != null and {{strings.data[0].attributes.strings.other}} != "" and {{${language}}} != null %}
{{strings.data[0].attributes.strings.other}}
{% else %}
{% abort_message('null or blank') %}
{% endif %}