5

私はこれまで取り組んできた多くのプロジェクトでGNUGettextをうまく使用してきましたが、最近の仕事で突然、非常に厄介なローカリゼーションシステムでの作業を余儀なくされました。

現在のシステムは翻訳をデータベースに保存し、新しい翻訳を追加すると次のようになります。

  • 翻訳キーを使用した関数呼び出しをソースコードに追加します。例:print translate('foo');
  • ファイルにいくつかのSQLINSERTステートメントを追加しtranslations.sqlます。
  • 名前でファイルを作成する(current revision nr + 1).sql
  • データベースで.sqlファイルを実行します。
  • 変更をコミットします(他の誰かが現在のリビジョン番号をコミットして変更する前に)。

このプロセスはすべて完全に手動で行われるため、小さなタイプミスを修正する必要がある場合でも、ほとんどすべてを繰り返す必要があります。複数形はサポートされていません。翻訳データベース全体は、翻訳がデータベースから削除されることはほとんどなく、追加および更新されるだけなので、かなり混乱しています。

私は他の開発者(特に1人の特定の開発者)を説得するためにいくつかの議論を試みました:

  • Gettextが標準として確立されていること、およびPOファイルを操作するために利用できるツールがたくさんあることについて話しました。
  • 私は、翻訳をデータベースに保存しても、テキストファイルに保存するよりもメリットがないことを説明しようとしました。データベースからキーごとに翻訳を取得するだけで、それ以上のことはありません。
  • 他の開発者はアプリのPHP部分に取り組んでおり、PHPにはGettextが組み込まれています。私はJavaScript側で作業しており、Gettextはサポートされていませんが、過去に独自のツールを作成しました。
  • 私たちのアプリはそれほど大きくないので、古いシステムからGettextへの変換は手動で行った場合でもかなりの時間がかかり、簡単に自動化できると確信しています。
  • 私は、会社の1つの小さなアプリにGettextを使用することに成功しました。

しかし、人々はまだ納得していません。私は何を間違っているのでしょうか?

編集:

この質問を投稿してから数か月後、ようやくGettextに移行します。2つ以上の言語をサポートする必要がある場合、現在のシステムの欠点は、これまでのところそれに抵抗している人々にとってより明白になりました。

4

3 に答える 3

6

あなたが間違っているのは、彼らの心には存在しない問題を解決する方法を彼らに教えることです。

あなたは彼らにそれが実際に解決される必要がある問題であることを理解させる必要があります。

編集:
あなたが最後にそこに着いたのを見てうれしいです、2番目の言語は彼らに部屋の中の象を認めさせたようです!

于 2009-04-29T13:46:56.710 に答える
2

いくつかの問題が考えられます:

Gettextの認識の欠如。開発者がライブラリについて知らない場合、彼らはそれを使用しません。

GPLと互換性のないライセンス。使用できない法的な理由があるかもしれません。

書き直す必要はありません。開発者が現在のシステムに十分満足している場合は、Gettextに移行するメリットがない可能性があります。

于 2009-04-29T13:54:17.847 に答える
2

私はあなたのためにいくつかのオプションを見ることができます:

  • あなたはあなたの方法を使って節約された時間(お金)を見積もることを試みることができます。
  • 維持するのがどれほど簡単か(頭痛が少ない)を示すことができます(デモ?)。
  • 先に進んで、すでに配置されているシステムを使用することができます。
于 2009-04-29T13:45:35.853 に答える