Slide 1

Slide 1 text

1 (LibreOffice) 리브레오피스 한국어 사용자 모임 Workshop: Introduction to LibreOffice Korean Translations (Wiki & UI) LibreOffice Korean Team 리브레오피스 한국어팀 성대현 (DaeHyun Sung, 成大鉉 , ソン・デヒョン ) 2024-07-29 Monday ( 월요일 )

Slide 2

Slide 2 text

2 LibreOffice Korean Team( ) 리브레오피스 한국어 모임 Who am I? DaeHyun Sung 성대현 , 成大鉉 , ソン・デヒョン One of Korean Open Source Contributors GNOME Foundation Member Founder member of LibreOffice Korean Team(2017-) Member of The Document Foundation (2019-) openSUSE.Asia Committee Korean Member Activities: Korean Community management & QA, improve some Korean features on LibreOffice

Slide 3

Slide 3 text

3 (LibreOffice) 리브레오피스 한국어 사용자 모임 Index Internationalization(i18n) Localization(l10n) Unicode Translations Wiki Translation UI Translation Using weblate(Recommend) Checking po file and apply modified po file to UI Upload po file (Not recommended)

Slide 4

Slide 4 text

4 (LibreOffice) 리브레오피스 한국어 사용자 모임 Internationalization(i18n) Korean: 국제화 , 세계화 Internationalization (aka ‘i18n’) is the design and development of a product that is enabled for target audiences that vary in culture, region, or language. Internationalizing your software means you can support across different regions and languages in the way humans expect to interact with an application – including the presentation of text, numbers, dates, etc., plus the layout of the user interface. – Unicode Consortium

Slide 5

Slide 5 text

5 (LibreOffice) 리브레오피스 한국어 사용자 모임 Internationalization(i18n) i18n(Internationalization) Software should be able to produce an process text in your language Processing input & text / generating output Multiple scripts Example) GNOME gucharmap

Slide 6

Slide 6 text

6 (LibreOffice) 리브레오피스 한국어 사용자 모임 Localization(l10n) Korean: 지역화 , 현지화 Localization is the adaptation of software for specific languages and cultures. Typically, this involves providing translations or providing alternate, locally-acceptable content such as stylesheets or images. Internationalized software makes localization very efficient. – Unicode Consortium

Slide 7

Slide 7 text

7 (LibreOffice) 리브레오피스 한국어 사용자 모임 Localization(l10n) The software should be able to speak in your language User Interface Manual/Guide translation

Slide 8

Slide 8 text

8 (LibreOffice) 리브레오피스 한국어 사용자 모임 Unicode What is Unicode? The Unicode Standard provides a unique number for every character, no matter what platform, device, application or language. It has been adopted by all modern software providers and now allows data to be transported through many different platforms, devices and applications without corruption. Support of Unicode forms the foundation for the representation of languages and symbols in all major operating systems, search engines, browsers, laptops, and smart phones—plus the Internet and World Wide Web (URLs, HTML, XML, CSS, JSON, etc.). Supporting Unicode is the best way to implement ISO/IEC 10646. – Unicode Consortium

Slide 9

Slide 9 text

9 (LibreOffice) 리브레오피스 한국어 사용자 모임 Unicode Character encoding standard, International standard(ISO/IEC 10646) Unicode and ISO 10646 https://www.unicode.org/faq/unicode_iso.html Supporting all human languages & emojis, etc Covers letters, number, punctuation marks and special symbols used in technical, mathematical, musical, etc

Slide 10

Slide 10 text

10 (LibreOffice) 리브레오피스 한국어 사용자 모임 Example of Localization GNU Hello https://www.gnu.org/software/hello/ Let’s download GNU Hello on Debian Linux https://ftp.gnu.org/gnu/hello/ Get download hello-2.12.tar.gz(current file) & extract it $ wget https://ftp.gnu.org/gnu/hello/hello-2.12.tar.gz $ tar xvfz hello-2.12.tar.gz $ cd hello-2.12/ $ ./configure $ make $ sudo make install

Slide 11

Slide 11 text

11 (LibreOffice) 리브레오피스 한국어 사용자 모임 Example of Localization .po file and translation example Set Locales $ sudo dpkg-reconfigure locales Generating locales (this might take a while)... de_DE.UTF-8... done en_US.UTF-8... done es_ES.UTF-8... done fr_FR.UTF-8... done hu_HU.UTF-8... done id_ID.UTF-8... done it_IT.UTF-8... done ja_JP.UTF-8... done ko_KR.UTF-8... done vi_VN.UTF-8... done zh_CN.UTF-8... done zh_HK.UTF-8... done zh_TW.UTF-8... done Generation complete.

Slide 12

Slide 12 text

12 (LibreOffice) 리브레오피스 한국어 사용자 모임 Example of Localization .po file and translation example Run GNU hello on Linux(Debian-like) $ LANG=en_US.UTF-8; LANGUAGE=en_US.UTF-8; ./hello Hello, world! $ LANG=ko_KR.UTF-8; LANGUAGE=ko_KR.UTF-8; ./hello 안녕하세요 , 여러분 ! $ LANG=fr_FR.UTF-8; LANGUAGE=fr_FR.UTF-8; ./hello Bonjour, le monde ! $ LANG=de_DE.UTF-8; LANGUAGE=de_DE.UTF-8; ./hello Hallo, Welt! $ LANG=ja_JP.UTF-8; LANGUAGE=ja_JP.UTF-8; ./hello こんにちは、世界! $ LANG=zh_CN.UTF-8; LANGUAGE=zh_CN.UTF-8; ./hello 世界你好! $ LANG=zh_TW.UTF-8; LANGUAGE=zh_TW.UTF-8; ./hello 哈囉,大家好! $ LANG=id_ID.UTF-8; LANGUAGE=id_ID.UTF-8; ./hello Halo, dunia! $ LANG=vi_VI.UTF-8; LANGUAGE=vi_VI.UTF-8; ./hello Chào thế giới!

Slide 13

Slide 13 text

13 (LibreOffice) 리브레오피스 한국어 사용자 모임 Example of Localization hello-2.12/po directory {ISO 639-1 code}.po files Language code – ko(Korean), ja(Japan), {ISO 639-1 code}_{ISO 3166-1 code}.po files Language code-Country code - pt_BR(Brazilian Portuguese), zh_CN(Mandarin Chinese – Mainland China)

Slide 14

Slide 14 text

GNU gettext and po, mo files GNU Gettext workflow https://en.wikipedia.org/wiki/Gettext#/media/File:Gettext.svg

Slide 15

Slide 15 text

15 (LibreOffice) 리브레오피스 한국어 사용자 모임 Translation In South Korea, LibreOffice Korean translation often references MS Office’s translation terms To maintain consistency with MS Office Microsoft Language Resources https://learn.microsoft.com/ko-kr/globalization/reference/microsoft-lan guage-resources Terminology - https://msit.powerbi.com/view?r=eyJrIjoiODJmYjU4Y2YtM2M0ZC00Yz YxLWE1YTktNzFjYmYxNTAxNjQ0IiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi 05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9 UI String - https://msit.powerbi.com/view?r=eyJrIjoiMmE2NjJhMDMtNTY3MC00 MmI2LWFmOWUtYWM5YTVjODI5MjQwIiwidCI6IjcyZjk4OGJmLTg2ZjEtN DFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9

Slide 16

Slide 16 text

16 (LibreOffice) 리브레오피스 한국어 사용자 모임 Translation Microsoft Terminology Search

Slide 17

Slide 17 text

17 (LibreOffice) 리브레오피스 한국어 사용자 모임 Translation Microsoft UI String Search

Slide 18

Slide 18 text

18 (LibreOffice) 리브레오피스 한국어 사용자 모임 Wiki Translation Let’s LibreOffice Wiki Translation https://wiki.documentfoundation.org/ Use Mediawiki syntax Many LibreOffice wiki contents have not been translated into Korean

Slide 19

Slide 19 text

19 (LibreOffice) 리브레오피스 한국어 사용자 모임 Example of Wiki Translation (1)

Slide 20

Slide 20 text

20 (LibreOffice) 리브레오피스 한국어 사용자 모임 Example of Wiki Translation (2)

Slide 21

Slide 21 text

21 (LibreOffice) 리브레오피스 한국어 사용자 모임 UI Translation There are two methods for LibreOffice UI translation using Weblate (recommended) Modify .po files and upload .po file on the Weblate

Slide 22

Slide 22 text

22 (LibreOffice) 리브레오피스 한국어 사용자 모임 UI Translation LibreOffice primarily uses Weblate for translations (Recommend) Translating po file directly(It’s too hard) Managing translations through Weblate https://translations.documentfoundation.org/ Setting up a weblate account For the first time, you only get translator role (only submit suggestions) Translate strings on the weblate site Weblate guide: https://wiki.documentfoundation.org/Language/WeblateGuide

Slide 23

Slide 23 text

23 (LibreOffice) 리브레오피스 한국어 사용자 모임 Let’s translate LibreOffice on Weblate Weblate screenshot https://translations.documentfoundation.org/

Slide 24

Slide 24 text

24 (LibreOffice) 리브레오피스 한국어 사용자 모임 Let’s translate LibreOffice on Weblate https://translations.documentfoundation.org/

Slide 25

Slide 25 text

25 (LibreOffice) 리브레오피스 한국어 사용자 모임 How to translate special characters 따옴표 (quotation mark) https://en.wikipedia.org/wiki/Quotation_mark https://www.w3.org/TR/klreq/#fonts-horizvertpunct Some quotation mark may look different on weblate, poedit, etc. So you have to copy and edit the original text.

Slide 26

Slide 26 text

26 (LibreOffice) 리브레오피스 한국어 사용자 모임 How to translate special characters 공백문자 (Empty characters, blank characters, invisible characters and whitespace characters) They look like a space, but are in fact a different (unicode) character. Ref: https://news.hada.io/topic?id=2604

Slide 27

Slide 27 text

27 (LibreOffice) 리브레오피스 한국어 사용자 모임 UI Translation Advanced Course – check KeyID & modify .po files directly KeyID KeyID builds are available in alpha and beta releases. Or source build version

Slide 28

Slide 28 text

28 (LibreOffice) 리브레오피스 한국어 사용자 모임 UI Translation KeyID on weblate & .po file Example) A8Eqt

Slide 29

Slide 29 text

29 (LibreOffice) 리브레오피스 한국어 사용자 모임 Build and check po translation Download from Gerrit source code review system recommend: Linux & MacOS How to build LibreOffice on some Platforms (from Wiki) Linux https://wiki.documentfoundation.org/Development/BuildingOnLinux MacOS https://wiki.documentfoundation.org/Development/BuildingOnMac Windows https://wiki.documentfoundation.org/Development/BuildingOnWindows Online https://wiki.documentfoundation.org/Development/LibreOffice_Online Android https://wiki.documentfoundation.org/Development/BuildingForAndroid

Slide 30

Slide 30 text

30 (LibreOffice) 리브레오피스 한국어 사용자 모임 How to build LibreOffice Build settings Default build setting (from LibreOffice Wiki) Add Korean Language setting Add debugging options $ git clone https://gerrit.libreoffice.org/core libreoffice $ cd libreoffice $ ./autogen.sh $ git clone https://gerrit.libreoffice.org/core libreoffice $ cd libreoffice $ ./autogen.sh --with-locales="ko" --with-lang="ko" $ git clone https://gerrit.libreoffice.org/core libreoffice $ cd libreoffice $ ./autogen.sh --with-locales="ko" --with-lang="ko" --enable-dbgutil

Slide 31

Slide 31 text

31 (LibreOffice) 리브레오피스 한국어 사용자 모임 LibreOffice build Tips Libreoffice repository clone and build tips by Nogata Jun https://gist.github.com/nogajun/24f89f60a4a758588a0c10d8f 4dcaf4a

Slide 32

Slide 32 text

32 (LibreOffice) 리브레오피스 한국어 사용자 모임 Build and Run LibreOffice Checking build options Let’s build run Run default Run Program selection (ex. Writer, calc, etc) $ ./autogen.sh --help $ make $ instdir/program/soffice # Linux $ open instdir/LibreOfficeDev.app # MacOSX $ instdir/program/soffice --writer $ instdir/program/soffice --calc

Slide 33

Slide 33 text

33 (LibreOffice) 리브레오피스 한국어 사용자 모임 Build and debugging LibreOffice Build Demo https://youtu.be/2gIqOOajdYQ How to build LibreOffice on your desktop (openSUSE.Asia summit 2017) https://youtu.be/gFIA0Ml5V84 Developing LibreOffice in Visual Studio https://youtu.be/Xn3CtIrMpIA LibreOffice Conference 2019 – Reducing LibreOffice build time with include-what-you-use https://youtu.be/WhEG64OMu5A LibreOffice Conference 2016: Connect, Embed, Integrate - LibreOffice as a building block https://youtu.be/g3ya-za_2cU

Slide 34

Slide 34 text

34 (LibreOffice) 리브레오피스 한국어 사용자 모임 LibreOffice git submodules Manage Git submodule dictionaries helpcontent2 translations % cat .gitmodules [submodule "dictionaries"] path = dictionaries url = https://gerrit.libreoffice.org/dictionaries branch = . [submodule "helpcontent2"] path = helpcontent2 url = https://gerrit.libreoffice.org/help branch = . [submodule "translations"] path = translations url = https://gerrit.libreoffice.org/translations branch = .

Slide 35

Slide 35 text

35 (LibreOffice) 리브레오피스 한국어 사용자 모임 Download submodules Git submodules Ref: https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84 %9C%EB%B8%8C%EB%AA%A8%EB%93%88 % git submodule update --init dictionaries 'dictionaries' 경로에 대해 'dictionaries' (https://gerrit.libreoffice.org/dictionaries) 하위 모듈 등록 '/Users/sungdaehyun/dev/lode/dev/core_kodict/dictionaries'에 복제합니다... 하위 모듈 경로 'dictionaries': '8cd579e3a67ab36040501138d17c647db24547a0' 체크아웃 % git submodule update --init translations 하위 모듈 경로 'translations': '1c00f748202eb64ffa0be5ce38e57a47f6e5798a' 체크아웃 % git submodule update --init helpcontent2 'helpcontent2' 경로에 대해 'helpcontent2' (https://gerrit.libreoffice.org/help) 하위 모듈 등록 '/Users/sungdaehyun/dev/lode/dev/core_kodict/helpcontent2'에 복제합니다... 하위 모듈 경로 'helpcontent2': 'd94a25c58b03f7619430ec7bf66564de16600548' 체크아웃

Slide 36

Slide 36 text

36 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Translated po file location core/translations/source/{ISO 639-1 code} ex) core/translations/source/ko core/translations/source/{ISO 639-1 code}-{ISO 3166-1} ex) core/translations/source/pt-BR

Slide 37

Slide 37 text

37 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Build translations Linux - Run program to check translations Example) MacOS $ make build-i10n-only $ msgfmt -o ./instdir/LibreOfficeDev.app/Contents/Resources/resource/ko/LC_MESSAGES/sfx.mo translations/source/ko/sfx2/messages.po $ open ./instdir/LibreOfficeDev.app $ make build-i10n-only $ msgfmt -o ./instdir/program/resource/ko/LC_MESSAGES/sfx.mo translations/source/ko/sfx2/messages.po $ ./instdir/program/soffice

Slide 38

Slide 38 text

38 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Before modify po file

Slide 39

Slide 39 text

39 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Checking KeyID – change KeyID

Slide 40

Slide 40 text

40 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Find KeyID on po file ex) translations/source/ko/sfx2/messages.po

Slide 41

Slide 41 text

41 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Apply modified po file to UI

Slide 42

Slide 42 text

42 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Before modify po file & After modify po file and build it

Slide 43

Slide 43 text

43 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Apply modified po file to UI $ grep "TWjA5" ./translations/source/ko/* -R ./translations/source/ko/cui/messages.po:#. TWjA5 $ vi ./translations/source/ko/cui/messages.po $ make build-l10n-only msgfmt -o instdir/program/resource/ko/LC_MESSAGES/cui.mo ./translations/source/ko/cui/me ssages.po $ ./instdir/program/soffice --writer

Slide 44

Slide 44 text

44 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation .po file translation Use poedit & modify some data

Slide 45

Slide 45 text

45 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Python package `Ko-po-check` Find common errors in Korean PO message translations https://pypi.org/project/ko-po-check/ Repo: https://github.com/changwoo/ko-po-check Korean Debian developer, Changwoo Ryu make & publish, maintain it.

Slide 46

Slide 46 text

46 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Example of ko-po-check

Slide 47

Slide 47 text

47 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Upload po file on weblate

Slide 48

Slide 48 text

48 (LibreOffice) 리브레오피스 한국어 사용자 모임 .po file translation Upload po file on weblate

Slide 49

Slide 49 text

49 (LibreOffice) 리브레오피스 한국어 사용자 모임 More Readings GNOME translations document Korean document – Debian Contributor Changwoo Ryu 오픈소스 번역 기여하기 v3 https://www.slideshare.net/changwoo/v3-114830838 오픈소스 번역 기여하기 v2 https://www.slideshare.net/changwoo/v2-89339074 오픈소스 번역 기여하기 https://www.slideshare.net/changwoo/ss-79394446

Slide 50

Slide 50 text

50 (LibreOffice) 리브레오피스 한국어 사용자 모임 More Readings Wiki – Localization area https://wiki.documentfoundation.org/Language Translating LibreOffice https://wiki.documentfoundation.org/Translating_LibreOffice Weblate Guide https://wiki.documentfoundation.org/Language/WeblateGuide LibreOffice Conference 2023 Workshop Software localization (l10n) and internationalization (i18n) https://events.documentfoundation.org/libreoffice-conference-2023/t alk/ADTTSK/ Weblate の LibreOffice 日本語翻訳を解析する https://speakerdeck.com/kojiannoura/weblatenolibreofficeri-ben-yu-fan -yi-wojie-xi-suru

Slide 51

Slide 51 text

51 (LibreOffice) 리브레오피스 한국어 사용자 모임 More Readings Libreoffice repository clone and build tips by Nogata Jun https://gist.github.com/nogajun/24f89f60a4a758588a0c10d8f4dcaf4a

Slide 52

Slide 52 text

52 (LibreOffice) 리브레오피스 한국어 사용자 모임 All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy. Thank you 고맙습니다 Thank you for attend the workshop 워크샵 참여에 대해 고맙습니다