Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
空間情報系オープンソースソフトウェア技術文書の国際化、 日本語ローカライゼーションの現状と課題
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kayama Yoichi
November 12, 2024
Technology
3.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
空間情報系オープンソースソフトウェア技術文書の国際化、 日本語ローカライゼーションの現状と課題
空間情報系オープンソースソフトウェア技術文書の国際化、日本語ローカライズの現状と課題
Kayama Yoichi
November 12, 2024
More Decks by Kayama Yoichi
See All by Kayama Yoichi
Current status and challenges of FOSS4G's Japanese localization.
yoichigmf
0
49
Other Decks in Technology
See All in Technology
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
210
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
740
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
370
フィンテック養成勉強会#68
finengine
0
150
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
360
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
31
430k
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
670
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
Getting Started with Google Antigravity
glaforge
0
320
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
190
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
What's in a price? How to price your products and services
michaelherold
247
13k
My Coaching Mixtape
mlcsv
0
360
Faster Mobile Websites
deanohume
310
32k
We Are The Robots
honzajavorek
0
400
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Transcript
空間情報系オープンソースソフトウェア技術文書の国際化、 日本語ローカライゼーションの現状と課題 嘉山陽一 古橋大地
⚫ 一般社団法人 情報支援レスキュー隊(IT DART) 監事 ⚫ OSGeo.JP 運営委員 ⚫ OSGeo.org Charter member ⚫
地理情報システム学会(FOSS4G 分科会)会員 ⚫ QGIS 日本語GUI マニュアル翻訳 コーディネータ ⚫ 青山学院大学 非常勤講師 ⚫ Twitter ID @GsgeekO ⚫ Facebook https://www.facebook.com/yoichi.kayama LinkedIn https://www.linkedin.com/in/yoichikayama/ 自己紹介 2 嘉山陽一
はじめに 空間情報系オープンソースソフトウェアの増加 Internetの普及と発展 共同作業基盤の形成 世界的開発・利用コミュニティの形成 英語を利用した情報共有 一部の技術情報の日本語化(GRASS,QGIS,PostGIS 等) 3
課題 英語で情報取得でき,データやシステムの利用方法 がわかれば良い. しかしデジタルで地理空間情報をあつかうための体 系を理解するための基礎的なデータ群やソフトウェ ア群については日本語情報があったほうがいいの では?(体系を理解するための基本情報) 例 GDAL、PDAL, MDAL、PROJ 等 4
OSGeo.org サイト掲載プロジェクト 5 コミュニティプロジェクト 23 その他プロジェクト 30 計 53
OSGeo.org サイト掲載プロジェクト 日本語ローカライズ状況 6 総プロジェクト数 53 日本語化プロジェクト数 7 (GRASS, GeoServer, OSGeo Live, pgRouting,
PostGIS, QGIS Desktop, OSGeo4W )
QGISとPostGISの翻訳作業 7
OSGeo.org 8 2006年結成 地理空間に関する オープンソースソフト ウェアコミュニティ群 の調整組織
OSGeoLive 9 lubuntuベースの起動イ メージや仮想マシン. 多くの空間系オープンソー スシステムやデータがイン ストールされているので各 種空間系オープンソースシ ステムを試しに利用するた めにはとても便利.利用の
ためのドキュメントは多くの 言語でローカライズされて いる.
OSGeoLive 10 ドキュメントの翻訳作業に はWebLateが利用されてい る.簡単な解説と起動方法 の翻訳率は高いので各種 ソフトウェアの入門には便 利なリソースになっている.
internationalization(i18n)と localization(l10n) internationalization(i18n) プログラムや文書の多言語対応 localization(l10n) プログラムや文書のローカル言語化 (文字の翻訳、日付や数値表示形式の変更等) 11
国際化の対象項目 • 文字セット(標準の文字コードなど) • 文字の方向性(左から右へ、右から左へ、左に向かって上から下へ、他) • 文言 • フォント •
書式 ◦ 数値(小数点の文字、桁区切りの文字、区切る桁数など) ◦ 日時(年月日の表記の仕方、イスラム暦/グレゴリオ暦/ユダヤ暦/和暦など使用す る暦の違い、他) • 日時情報の時差 • 通貨情報 12
gettextを利用したi18nとl10n gettext GNUプロジェクトで作成された i18n とl10n用 のライブラリ 13
gettextを利用したi18nとl10n GNUプロジェクトによって作成された国際化と地域化のためのプログラムライブラリ。 いろいろなプログラム言語から利用できる。 プログラムを書く時にこのライブラリを利用し、国際化する部分をソースコードで指定した書き方を 行う。 そのソースコードに対してツールを動かすことで国際化する部分の別ファイル抽出と地域化用の 言語別ファイルを作成する。 地域化用個別ファイルの翻訳必要部分を翻訳テキストで修正し、それをコンパイルしたファイルを 成果物と一緒に配布すると個別実行環境では実行時のLOCALE環境変数を参照し、そこで指定 された地域の翻訳ファイルがある場合はその翻訳ファイルを利用してプログラムが実行される。
https://www.gnu.org/software/gettext/manual/gettext.html 14
gettextの利用例 python言語のプログラムソースでの利用例 # main.py def print_some_strings(): print("Hello world") print("This is
a translatable string") if __name__ == '__main__': print_some_strings() # main.py import gettext _ = gettext.gettext def print_some_strings(): print(_("Hello world")) print(_("This is a translatable string")) if __name__=='__main__': print_some_strings() gettext適用前のソースコード gettext適用修正後のソースコード
gettextの利用例 前頁のプログラムの実行結果 $ python main.py Hello world This is a
translatable string
gettextの利用例 $ pygettext.py -d base -o locales/base.pot src/main.py 前頁プログラムのファイル名が src/main.py
だとして以下のコマンドを 実行する そうすると locales/base.pot というファイルが生成される
locales/base.pot の中身 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR
ORGANIZATION # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # "Project-Id-Version: PACKAGE VERSION\n" 略 "Generated-By: pygettext.py 1.5\n" #: src/main.py:5 msgid "Hello world" msgstr "" #: src/main.py:6 msgid "This is a translatable string" msgstr ""
locales/base.pot の中身 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR
ORGANIZATION # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # "Project-Id-Version: PACKAGE VERSION\n" 略 "Generated-By: pygettext.py 1.5\n" #: src/main.py:5 msgid "Hello world" msgstr "" #: src/main.py:6 msgid "This is a translatable string" msgstr "" このファイルは翻訳作業を行うためのテンプレートファ イル。テンプレートファイルを各地域別にコピーしてそれ ぞれの地域の言語で msgstr ”” の箇所に msgid で示 されている文字の翻訳結果を記入していくことが localizationの作業になる。
前頁ファイルで日本語翻訳をや りたい場合 locale/base.potファイルを locale/en/LC_MESSAGES/base.po と locale/ja/LC_MESSAGES/base.po という名前でコ ピーする。 locale/ja/LC_MESSAGES/base.po で msgstr の行のダブルクオーテーションの間に
msgid で示されている文章の 翻訳文字列を記述する。 作業が終了したら locale/jp/LC_MESSAGES フォルダで msgfmt.py -o base.mo base というコマンドを実行して locale/ja/LC_MESSAGES/base.mo というファイルを生成する。 というのが翻訳作業の手順になる。
locale/ja/LC_MESSAGES/base.po の翻訳結果例 # My App. # Copyright (C) 2018 #
中略 "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" #: main.py:5 msgid "Hello world" msgstr "こんにちは世界" #: main.py:6 msgid "This is a translatable string" msgstr "これは翻訳可能なテキストです"
None
None
gettextの仕組みでi18n,l10n用の情報を本体と 分離して管理できる poファイルを翻訳する作業が翻訳作業者の分担作業になる。これによりプログラ ム開発や修正の作業とlocalization(翻訳)作業を分離することができる。 gettextの仕組みは様々なプログラム言語で利用できるようになっているのでほと んどのプログラムのi18nとL10n作業はgettextの仕組みを利用している。 poファイルの翻訳作業用のツールはいろいろある。 WEB上でpoファイルを翻訳する仕組みもある。 gettextの仕組みはプログラムだけでなく、文書そのもののi18n,L10nにも利用され ている。
Sphinxと文書管理 元はPythonソースから技術文書を作成する仕組み reStructured textをソースとして WEB,PDF,Latex ,unix help,ePub等 多彩な出力が可能. gettextが対応しているので i18n,l10nが可能
25
QGISやGDALの技術文書はSphinxで 作成,管理
翻訳支援システム TransifexやWeblate WEB上での分担翻訳システム gettextで作成した po ファイルを利用可能 Github ActionでGithubと連動設定可能 27
QGISの日本語ローカライゼーショ ン QGIS Desktop コーディネーター 2名 レビューアー 4名 翻訳者 64名 QGIS Docs and Website
コーディネーター 6名 レビューアー 2名 翻訳者 90名 28
GDAL文書のローカライゼーション試行 GDAL ベクタ・ラスタデータ 利用のための抽象 ライブラリ. QGIS,ArcGISをはじ め多くのソフトウェ アで利用 29
GDAL技術文書はローカライズされていない 技術文書はプログ ラムソースコードと 同じリポジトリの doc というディレクト リ以下においてあ る.reStructured text で作成.Sphinxで管
理とビルドしている. 30
Sphinxの国際化機能を利用して日本語リソー スを作成.翻訳作業中 31 https://osgeo-jp.github.io/gdaldoc_ja/ tps://github.com/OSGeo-jp/gdal/blob/i18n/doc/so ce/locale/ja/LC_MESSAGES
日本語ローカライズ試行のためGDALのリポジ トリをfork .i18nというブランチを作成. 技術文書はプログ ラムソースコードと 同じリポジトリの doc というディレクト リ以下においてあ る.reStructured
text で作成.Sphinxで管 理とビルドしている. 32
poファイルをVSCodeで直接編集した後Sphinxで buildして日本語版HTMLを作成 VSCodeでGithub Copilotを利用できるよ うに設定しておくとGithub Copilotが翻 訳を支援してくれる。翻訳作業の効率 はこのやり方がいいかも。 33
ローカライゼーションの課題(1) ・GIS技術の体系基盤を担うようなソフトウェア文書 のローカライゼーションは技術体系普及のために あったほうがいい(GDAL,PDAL,PROJ等) 34
・オープンソースの場合ローカライズ作業メンバーの 確保や調整が必要. 個人的に作業開始を行うことも可能. コミュニティや学会が調整を行うといいのでは. 35 ローカライゼーションの課題(2)
・複数人で翻訳をやる場合翻訳作業の原則をつくり, 共有することが必要. ・日本語の文体,句読点,ロケール情報の統一. ・電子文書形式(reStructuredText, MarkDown等)の 規約,利用方法の統一 ・専門用語の共有( JSGI2.0 制定時の標準用語集) 36
ローカライゼーションの課題(3)
情報共有や議論ができる場所が必要 37 DiscordというBBSにGeo Community in Japanというグ ループを作成. #osgeoドキュ メント翻訳 と #qgisドキュメ
ント翻訳 という会議室を作 成. ここで日本語ローカライズ についての情報共有や意 見交換ができないか試行 中. 参加希望者は yoichi.kayama@gmail.com までご連絡下さい
ご清聴ありがとうございました 38