alkah3st
(Daniel Quinn)
1
私は、置き換えるすべてのテキストを取得する唯一の方法は、Site textsの設定を使用して各テキストを置き換えることだと読みました。私は次の表現を変更しようとしています:
Topics → Threads
Categories → Forums
Subcategories → Subforums
これはメッセージボードにはるかに理にかなっていると思います。Site textsで多くのものを変更できましたが、これは非常に非効率的な方法です。ほかに方法はありますか?
(また、結果は最初の50件しか返さないため、Site textsだけで全てを実際に変更することはできません。)
pfaffman
(Jay Pfaffman)
2
もしそれが譲れないこだわり(そしてここで質問するときは、あなたの言語を使うのか、それとも私たちの言語を使うのか?)であれば、discourse/config/locales/client.en.yml at main · discourse/discourse · GitHub を見て、それらすべてを確認できます。
「いいね!」 3
サードパーティ製プラグインを使用できるかどうかに応じて、これは役立つかもしれません。
alkah3st
(Daniel Quinn)
4
笑、あなたの言語を使って物事を正常に保つね!このファイルについてですが、ローカルインストールの内容を変えるだけで、サイト全体のすべてが変わりますか?
alkah3st
(Daniel Quinn)
5
ああ、共有してくれてありがとう。コメントによると、それがUI要素にダメージを与える可能性があることを心配しています…
「いいね!」 1
pfaffman
(Jay Pfaffman)
6
それはほとんど、あなたにそれらが何であるかを見せるためです。
そのファイルを編集して、自分のバージョンをコンテナ内のものにコピーするように工夫することもできます。
もう一つできることは、それを編集してからAPIを通じてデータベースの内容を更新するように工夫することです。あるいは、Railsで行うこともできるでしょう。実際、いくつかのAIにスクリプトを書かせて更新を行わせるのはそれほど難しくないかもしれません。
本当に推奨はしませんが、面白いかもしれません。
alkah3st
(Daniel Quinn)
7
つまり、このファイルはアプリが実際の値でデータベースを埋めるために解釈するものですか?つまり、これがシステムが読み取る「デフォルト」なのですか?
いいえ、そうは思いません。
これはデータベースにアクセスしません(遅すぎると思います)。
ロケールのほとんどは、速度のためにメモリ内で処理され、Redisをキャッシュとして使用していると信じています(間違っていたら訂正してください)。
データベースに格納されるのは、あなたの変更(translation_overridesテーブル内)のみであり、アプリの初期化時、またはオンライン中に単一の変更を加えたときに随時読み込まれます。
いくつか指摘させてください。
- 変更の数を大幅に増やすと、アプリの初期化時間が長くなる可能性があります(誰かがこれをベンチマークしたかどうかはわかりません)。
- Discourseが進化し、独自の名称を維持するにつれて、これらを維持するのは管理上の手間になる可能性があります。あなたはここで自分の仕事を作り出しています。
- 現在、おそらく最も人気のあるフォーラムプラットフォームであることを考えると、多くの人々がすでに少なくとも1つのDiscourseサイトを使用しており、名称に慣れているため、ユーザーがすでに慣れているものを以前の標準に戻すことで混乱させることを検討してみてはどうでしょうか?
以下も参照してください。
これは、各カテゴリが独自の管理者、URL、設定、目的を持っていることを意味します…例えば、Metaはフォーラムです。それはいくつかのフォーラムで構成されていません…どうやって議論できるのか本当にわかりません?しかし、話がそれてしまいました。
pfaffman
(Jay Pfaffman)
9
【引用=“alkah3st、投稿:7、トピック:366925”]
このファイルは、アプリが実際の値でデータベースを埋めるために解釈するものです
【/引用】
いいえ。
【引用=“alkah3st、投稿:7、トピック:366925”]
つまり、これはシステムが読み取る「デフォルト」です
【/引用】
はい。
すべてを変更したい場合、これはひどいアイデアですが、そのファイルを編集し、/var/discourse/shared/standalone/whateverに配置できます
そして、app.ymlに実行コマンドを追加して、それを/shared/whateverから/var/www/discourse/config/locales/にコピーさせます
でも、その後はコミットを監視して、変更された場合に追随できるようにする必要があります。
そのためには、値をデータベースに入れるAPIやRailsの方法の方が良いかもしれません。
alkah3st
(Daniel Quinn)
10
丁重に申し上げますと、あなた方は私のユースケースを理解していません。「それはひどいアイデアだ」や「ユーザーエクスペリエンスを損なう可能性がある」と言うことは、私が何をしているのか、その理由を知らずに推測しています。私は分類学やユーザーエクスペリエンスについての議論に入りたいわけではありません。私のユースケースとオーディエンスにとって、Discourseがそのコンテンツタイプを説明するために使用している用語は理にかなっていません。
まとめると:
- Discourseはこのファイルを読み取ってデフォルトでラベルを設定します。私が翻訳で行った変更はこれを上書きし、最終的にデータベースに保存されます。したがって、サイト全体の用語を最も効率的に変更する方法は、このファイルを変更して /locales/ フォルダに移動することだけです。
- ここで唯一の懸念事項は、そのファイルがコアによって更新されるかどうかです。そうであれば、新しいテキストは私のファイルではなく /standalone/ バージョンのファイルから読み込まれると予想されるため、それに合わせて私のファイルを更新する必要があります。パフォーマンスの問題は、データベースが関与せず、単にファイルから読み取るだけなので、どうなのか分かりません。
よろしくお願いします。
「いいね!」 1
pfaffman
(Jay Pfaffman)
11
それは一つの方法です。新しいコンテナをビルドするたびにそれを行うように、app.yml を編集する必要があります。
上記のように行うと、あなたのバージョンは現在のバージョンで提供されているバージョンを上書きします。「スタンドアロンバージョン」とは、おそらくあなたが言っているのは、locales ディレクトリにあるバージョンだと思います。したがって、この方法で行うと、変更時に注意しない限り、ファイルには最終的にものが欠落することになります。最悪の場合でも、欠落しているものの名前が表示されるだけなので、気にしないかもしれません。クラッシュしませんが、混乱して見えるだけです。
これらのことは、理解しないと問題を引き起こす可能性があるため、悪い考えだと言っています。したがって、最終的に大惨事になった場合、私は、変更方法を教えたまさにその変更を推奨しなかったという記録に残ります。
「いいね!」 1
merefield
(Robert)
12
あなたは、app.ymlでsedコマンドを複数発行して、更新を自動化できます。
そうすれば、あなたはわずかに「変更に寛容」になるかもしれません。
もしもあなたが約20件のエントリだけを変更していることが判明した場合は、管理者オンラインでそれを行った方がいいでしょう!
興味深いチャレンジですね!
「いいね!」 1
alkah3st
(Daniel Quinn)
13
ヒントをありがとう!
ほとんど(もしくは全て)の公開参照はサイトのテキストから取得できたようです。でも、より包括的な方法を開発するときはそれを念頭に置いておきます。
「いいね!」 2
pfaffman
(Jay Pfaffman)
14
素晴らしい!それは私が提案した全体を上書きするよりも間違いなく良いです。 。 。 。それらの sed 操作がテキストの名前を変更しない限り!
「いいね!」 1