なぜAndroidのローカライズは面倒なのか
XMLを手動で編集
各言語の strings.xml をコピーします。value-de フォルダを忘れると、アプリがクラッシュします。
高額なエージェンシー
翻訳サービスは1語あたり€0.15を請求します。500の文字列を含むアプリは、言語ごとに€500以上かかります。
壊れたフォーマッター
Google Translate は %1$s と %d を壊します。getString() の呼び出しがアプリをクラッシュさせます。
使い方
3つのステップ。2分。完了。
1
strings.xml をアップロード
JSONファイル、ARBファイルにも対応。形式を認識します。
2
言語を選択
29言語。ドイツ語、フランス語、日本語、中国語...
3
ダウンロード
res/ ディレクトリ用に values-de/、values-fr/、values-es/ を取得します。
サポートされている Android フォーマット
ネイティブ Android、React Native、Flutter — すべて1つのツールで
strings.xml
ネイティブ Android
JSON i18n
React Native、Flutter
ARB
Flutter/Dart
XLIFF
産業標準
前 → 後
プレースホルダー、複数形、および HTML タグはそのまま保持されます。
以前 (values/strings.xml)
<!-- res/values/strings.xml -->
<resources>
<string name="app_name">My App</string>
<string name="welcome">Welcome, %1$s!</string>
<string name="items">%d items found</string>
<plurals name="songs">
<item quantity="one">%d song</item>
<item quantity="other">%d songs</item>
</plurals>
</resources>後で (values-de/strings.xml)
<!-- res/values-de/strings.xml -->
<resources>
<string name="app_name">Meine App</string>
<string name="welcome">Willkommen, %1$s!</string>
<string name="items">%d Artikel gefunden</string>
<plurals name="songs">
<item quantity="one">%d Lied</item>
<item quantity="other">%d Lieder</item>
</plurals>
</resources>Android 開発者向けに構築
プレースホルダ保護
自動的に %s、%d、%1$s、{name} および @string の参照を保護します。
すべての Android フォーマット
strings.xml、React Native向けJSON、Flutter向けARB。すべてを1つのツールで。
2週間の代わりに2分
アップロード → 言語を選択 → values-de、values-fr、values-esをダウンロード。
Translation Memory = 90% の節約
すでに翻訳済みの文字列は再利用されます。アプリの更新はほとんどコストがかかりません。
完全な Android 構文サポート
%s, %d, %f フォーマッタ
%1$s 位置引数
@string/参照
複数形(数量文字列)
文字列配列
CDATA セクション
HTMLの書式設定タグ
エスケープシーケンス (\\n, \\t)
どうしてGoogle翻訳を使わないのですか?
| shipglobal | Google Translate | DeepL | |
|---|---|---|---|
| %1$s が保護されています | |||
| XML構造 | |||
| 複数形 | |||
| 翻訳メモリ |