エラー「Translation of file content failed near line xx」が発生します
目次
原因と対応方法を教えてください。
以下のいずれかの方法で解消できます。必要に応じて選択してください。
1.エラー対象のファイルから該当文字の修正をする
2.エラー対象のファイルのファイルタイプを<text>に変更する
Unicodeモードで起動しているPerforceサーバは、日本語を含むテキストのファイルを <unicode> というファイルタイプで扱います。
<unicode> タイプのファイルの文字コードは、Perforceサーバ内ではUTF-8で管理され、クライアント側ではクライアントマシンで設定された文字コードで管理されます。
例えばWindows(文字コード:Shift-JIS)のクライアントマシンが、<unicode>ファイルをサブミットした時、Perforceはファイルに対してShift-JIS → UTF8 への文字コード変換を行います。
サブミットやリビジョンの取得など、ファイル転送の際に何らかの理由で文字コードの変換に失敗した場合、このエラーが発生します。
文字コードの設定
環境変数 P4CHARSET で設定した情報は、PERFORCE コマンドライン・クライアントに対して有効な設定です。
P4V の場合、[ 接続 ] > [ 文字エンコードを選択 ]で指定された値が優先されます。
手順
1. エラー対象のファイルから該当文字の修正をする
1.サブミットしようとしているファイルの中からエラーの出力されているファイルを特定します。
2.該当ファイルを開き、エラーメッセージで指定された行数付近を確認します
"Translation of file content failed near line xx"←"xx"がエラーの原因の行番号
3.文字化けしている箇所や設定と異なる文字コードの文字を修正します
2. エラー対象のファイルのファイルタイプを<text>に変更する
<text>ファイルは文字コード変換が行われないため、<unicode>ファイルのファイルタイプを <text> に変更することでエラーを解消できます。
ファイルタイプの変更は以下の2通りの方法があります
1.コマンドラインでのファイルタイプの変更。p4 edit コマンドを使用します
p4 edit -t text file
2.P4Vでのファイルタイプの変更
① <unicode>ファイルのコンテキストメニューから[ ファイルタイプを変更(Y) ]を選択します。
② [ ファイルタイプを変更 ]が表示されるので、[ ベースのファイルタイプ(B) ]から[ text ]を選択し、[ OK ]を押下します。
(その他の項目は必要に応じて選択してください)
③ ファイルが<text>に変わったことを確認し、サブミットします。
登録ファイルが多すぎて、ファイルの特定ができなかった場合(P4V)
一度に大量のファイルを登録しようとしている場合、P4V のログパネル(図:緑枠)がスクロールアウトしてしまい、ファイルが特定できないことがあります。
その際は、ログパネルの内容をファイルへ出力し、その出力ログから、エラーが発生したファイルの特定が可能です。
ログ出力設定手順
- P4V にて[ 編集 ] → [ プリファレンス(N) ]を選択します。
- [ ログ記録 ]選択し[ ファイルへのログ記録を有効にする(O) ]のチェックボックスをオンにします。
[ 名前 ]フィールドに、出力先ログファイルのフルパスを入力します。
-
設定が完了したら、P4Vを再起動します。