Quantcast
Channel: さくらのナレッジ is_page
Viewing all articles
Browse latest Browse all 268

多言語情報をデータベースにどう持つか 〜N+1問題と対策〜

$
0
0
この記事は2020年10月28日に行われたさくらの夕べ Tech Night #3 Onlineにおける発表を文章化したものです。
さくらインターネットの江草です。さくらインターネットの技術推進担当の執行役員とCISOをやっております。 この記事では、多言語情報をどう扱うかを一例に、N+1問題というものを紹介し、それにどう対応するかというところを説明したいと思います。今回はDjangoというPythonのフレームワークを例にしていますが、たぶん他のフレームワークでも応用できるだろうと思っています。 データベースを使わない場合 まず、多言語対応すべき情報が動的なものではなく、ただの定数である場合、つまりデータベースを使わずコード中の文字列を国際化/地域化する場合を考えます。 この場合はほぼ一択で、gettextを使うのが一般的かと思います。 gettextを使うと、ソースコード中のいろんな文字列を、いろんな言語に翻訳して渡すことができます。例えば、コード中に_("Invalidinput")みたいな文字列を書いておくと、それをいろんな言語に翻訳するための翻訳ファイル(*.po)を自動で生成し、その翻訳ファイルを修正し、コンパイルしてバイナリのメッセージカタログファイル (*.mo) にすることで、多言語の翻訳ができます。 参照:gettext - メッセージカタログ例えばDjangoの場合は、ソースコード中に国際化したい文字列を書いておいて、makemessagesで日本語用の翻訳ファイルを作成し、自分で編集した

Viewing all articles
Browse latest Browse all 268

Trending Articles