Transifex
Transifexは、言語に関係なく、ユーザー群全体で堅牢なローカライゼーションを可能にします。
この統合はTransifexによって管理されています。
統合について
BrazeとTransifexの統合では、コネクテッドコンテンツを使用してリソース文字列コレクションを取得し、言語ベースの条件付き書式の行ではなく、関連する翻訳をメッセージに含めることができます。これにより翻訳が自動化され、チームは優れたカスタマーエクスペリエンスの提供に集中できます。
2022年4月7日をもって、TransifexはAPIバージョン2および2.5を廃止し、バージョン3に移行しました。v2およびv2.5は動作しなくなり、関連するリクエストは失敗します。
以下の統合手順はバージョン3のアップデートを反映しています。コネクテッドコンテンツの呼び出しを適宜更新してください。
前提条件
| 必要条件 | 説明 |
|---|---|
| Transifexアカウント | このパートナーシップを利用するには、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/<TRANSIFEX_BEARER_TOKEN>'
たとえば、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 %}