% $Header: /cvsroot/latex-beamer/latex-beamer/solutions/conference-talks/conference-ornate-20min.en.tex,v 1.7 2007/01/28 20:48:23 tantau Exp $

\documentclass{beamer}

% This file is a solution template for:

% - Talk at a conference/colloquium.
% - Talk length is about 20min.
% - Style is ornate.



% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
%
% In principle, this file can be redistributed and/or modified under
% the terms of the GNU Public License, version 2.
%
% However, this file is supposed to be a template to be modified
% for your own needs. For this reason, if you use this file as a
% template and not specifically distribute it as part of a another
% package/program, I grant the extra permission to freely copy and
% modify this file as you see fit and even to delete this copyright
% notice. 


\mode<presentation>
{
  \usetheme{PaloAlto}
  \usecolortheme{crane}
  \usefonttheme{structurebold}
  % or ...

  \setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}


\usepackage[thai]{babel}
\def\thaittdefault{ttypist}
% or whatever

\title[การแปล GNOME] % (optional, use only with long paper titles)
{การแปล GNOME}

\author[เทพพิทักษ์] % (optional, use only with lots of authors)
{เทพพิทักษ์ การุญบุญญานันท์}
% - Give the names in the same order as the appear in the paper.
% - Use the \inst{?} command only if the authors have different
%   affiliation.

\institute[GNOME] % (optional, but mostly needed)
{GNOME Thai translation coordinator}
% - Use the \inst command only if there are several affiliations.
% - Keep it simple, no one is interested in your street address.

\date[13 กันยายน 2551] % (optional, should be abbreviation of conference name)
{13 กันยายน 2551}
% - Either use conference name or its abbreviation.
% - Not really informative to the audience, more for people (including
%   yourself) who are reading the slides online

%\subject{Theoretical Computer Science}
% This is only inserted into the PDF information catalog. Can be left
% out. 



% If you have a file called "university-logo-filename.xxx", where xxx
% is a graphic format that can be processed by latex or pdflatex,
% resp., then you can add a logo as follows:

% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
% \logo{\pgfuseimage{university-logo}}



% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
%\AtBeginSubsection[]
%{
%  \begin{frame}<beamer>{Outline}
%    \tableofcontents[currentsection,currentsubsection]
%  \end{frame}
%}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command: 

%\beamerdefaultoverlayspecification{<+->}


\begin{document}

\mode<presentation>
{
  \sffamily
}

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}{เนื้อหา}
  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}


% Structuring a talk is a difficult task and the following structure
% may not be suitable. Here are some rules that apply for this
% solution: 

% - Exactly two or three sections (other than the summary).
% - At *most* three subsections per section.
% - Talk about 30s to 2min per frame. So there should be between about
%   15 and 30 frames, all told.

% - A conference audience is likely to know very little of what you
%   are going to talk about. So *simplify*!
% - In a 20min talk, getting the main ideas across is hard
%   enough. Leave out details, even if it means being less precise than
%   you think necessary.
% - If you omit details that are vital to the proof/implementation,
%   just say so once. Everybody will be happy with that.

\section{การจัดเตรียม PO/POT}

\begin{frame}{การจัดเตรียม PO/POT}
  % - A title should summarize the slide in an understandable fashion
  %   for anyone how does not follow everything on the slide itself.

  \begin{itemize}
  \item
    Damed Lies:\\
    \texttt{http://l10n.gnome.org/teams/th}
  \item
    SVN + intltool:\\
    Checkout:\\
    \texttt{\$ svn co http://svn.gnome.org/svn/\textit{pkg}/trunk \textit{pkg}}\\
    Generate POT:\\
    \texttt{\$ cd po \&\& intltool-update -\wbr-pot}\\
    Update th.po:\\
    \texttt{\$ cd po \&\& intltool-update th}
  \end{itemize}
\end{frame}

\section{การแปล}

\subsection{เครื่องมือ}

\begin{frame}{เครื่องมือ}{เครื่องมือแก้ไข}
  \begin{itemize}
  \item
    gtranslator
  \item
    kbabel
  \item
    poedit
  \item
    vim/emacs
  \end{itemize}
\end{frame}

\begin{frame}{เครื่องมือ}{เครื่องมือช่วย}
  \begin{itemize}
  \item
    OSS Glossary:\\
    \texttt{http://www.opentle.org/ossglossary}
  \item
    OSS Corpus:\\
    \texttt{http://www.opentle.org/osscorpus}
  \item
    Wiki:\\
    \texttt{http://l10n.opentle.org}
  \item
    Mailing List:\\
    \texttt{http://groups.google.co.th/group/thai-l10n/}
  \end{itemize}
\end{frame}

\subsection{ประเด็นการแปล}

\begin{frame}{ประเด็นการแปล}{ชนิดของแฟ้ม}
  \begin{itemize}
  \item
    POT -- Portable Object Template
    \begin{itemize}
      \item
        template สำหรับเริ่มแปลภาษาใหม่
      \item
        copy เป็น \texttt{\textit{xy}.po}, กำหนด header, เริ่มแปล
    \end{itemize}
  \item
    PO -- Portable Object
    \begin{itemize}
      \item
        formatted text file สำหรับให้มนุษย์แก้ไข
      \item
        compile เป็น MO ได้ด้วย \texttt{msgfmt}
    \end{itemize}
  \item
    MO -- Machine-dependent Object
    \begin{itemize}
      \item
        binary file สำหรับให้โปรแกรมอ่านขณะทำงาน
      \item
        มักติดตั้งไว้ที่ \texttt{/usr/share/locale/\textit{xy}/LC\_MESSAGES/}
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{ชนิดของข้อความ}
  \begin{itemize}
  \item
    Untranslated
    \begin{itemize}
      \item
        \texttt{msgstr ""}
      \item
        โปรแกรมจะใช้ข้อความภาษาอังกฤษต้นฉบับ
    \end{itemize}
  \item
    Translated
    \begin{itemize}
      \item
        \texttt{msgstr "\textit{ข้อความ}"}
      \item
        โปรแกรมจะใช้ข้อความที่แปล
    \end{itemize}
  \item
    Fuzzy
    \begin{itemize}
      \item
        \texttt{\#, fuzzy}\\
        \texttt{msgstr "\textit{ข้อความ}"}
      \item
        มักเป็นข้อความใกล้เคียงที่ gettext หาให้ขณะ update PO
      \item
        โปรแกรมจะใช้ข้อความภาษาอังกฤษต้นฉบับ
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{Format String}
  \begin{itemize}
    \item
      ใช้กับฟังก์ชันในสไตล์ \texttt{printf{}}
    \item
      แทนตัวแปรด้วย ``\texttt{\%s}'' (string), ``\texttt{\%d}'' (decimal) ฯลฯ ในข้อความ 
    \item
      ภาษา C:
      \begin{itemize}
        \item
          ธรรมดา:\\
          \texttt{msgid "Saving file '\%s'..."}\\
          \texttt{msgstr "กำลังบันทึกแฟ้ม '\%s'..."}
        \item
          สลับตำแหน่ง:\\
          \texttt{msgid "\%d \%s characters"}\\
          \texttt{msgstr "อักขระ \%2\$s \%1\$d ตัว"}
      \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{Format String}
  \begin{itemize}
    \item
      ภาษา Python:
      \begin{itemize}
        \item
          ธรรมดา:\\
          \texttt{msgid "Saving file '\%s'..."}\\
          \texttt{msgstr "กำลังบันทึกแฟ้ม '\%s'..."}
        \item
          สลับตำแหน่ง:\\
          \texttt{msgid "\%(count)d \%(symbol)s characters"}\\
          \texttt{msgstr "อักขระ \%(symbol)s \%(count)d ตัว"}
      \end{itemize}
    \item
      ภาษา C\#:
      \begin{itemize}
        \item
          ธรรมดา:\\
          \texttt{msgid "Saving file '\{0\}'..."}\\
          \texttt{msgstr "กำลังบันทึกแฟ้ม '\{0\}'..."}
        \item
          สลับตำแหน่ง:\\
          \texttt{msgid "\{0\} \{1\} characters"}\\
          \texttt{msgstr "อักขระ \{1\} \{0\} ตัว"}
      \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{Format เวลา}
  \begin{itemize}
    \item
      ใช้กับฟังก์ชัน \texttt{strftime{}}
    \item
      แทนตัวแปรด้วย ``\texttt{\%d}'' (วันที่), ``\texttt{\%m}'' (เดือน) ฯลฯ ในข้อความ 
    \item
      ข้อมูลเพิ่มเติม: \texttt{man strftime}
    \item
      การทดสอบ: \texttt{date "+\textit{format}"}
    \item
      แปลให้เหมาะกับธรรมเนียมไทย
      \begin{itemize}
        \item
          ใช้ พ.ศ. ถ้าเป็นไปได้:\\
          \texttt{msgid "\%B \%-d \%Y"}\\
          \texttt{msgstr "\%-d \%B \%Ey"}\\
        \item
          นาฬิกาเป็น 24 ชั่วโมง (ไม่มี AM/PM):\\
          \texttt{msgid "\%I:\%M:\%S \%p"}\\
          \texttt{msgstr "\%H:\%M:\%S"}\\
        \item
          ฯลฯ
      \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{บริบท}
  \begin{itemize}
    \item
      ข้อความเดียวกัน อาจมีความหมายต่างกันในบริบทต่าง ๆ
    \item
      gettext แยกได้ด้วย \textit{บริบท (context)}
    \item
      แบบเก่า:\\
      \texttt{msgid "status|Read"}\\
      \texttt{msgstr "อ่านแล้ว"}\\
      (ตัดข้อความหน้า ``\texttt{|}'')
    \item
      แบบใหม่:\\
      \texttt{msgctxt "status"}\\
      \texttt{msgid "Read"}\\
      \texttt{msgstr "อ่านแล้ว"}\\
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{Human Interface Guidelines (HIG)}
  \begin{itemize}
    \item
      GNOME HIG กำหนด guideline สำหรับ UI เป็นข้อตกลงร่วม
    \item
      ข้อความใน UI จึงมีความหมายพิเศษ
    \item
      ``.{\wbr}.{\wbr}.'' ท้ายข้อความในปุ่ม/เมนู หมายถึงเลือกแล้วมีการเปิดกล่องโต้ตอบ
      \begin{itemize}
        \item
          ห้ามตัดออก
        \item
          ตัวอย่าง:\\
          \texttt{msgid "Browse..."}\\
          \texttt{msgstr "เรียกดู..."}\\
      \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{ประเด็นการแปล}{HIG}
  \begin{itemize}
    \item
      ``\_'' หน้าอักขระ กำหนดคีย์ด่วนสำหรับเลือกรายการด้วยแป้นพิมพ์
      \begin{itemize}
        \item
          เลือกอักขระภาษาไทยที่เหมาะสม
        \item
          เลี่ยงอักขระที่มีสระล่างถ้าเป็นไปได้ เพราะบางทีจะไม่เห็นขีดเส้นใต้
        \item
          UI ชุดที่ปรากฏพร้อมกัน อย่าให้คีย์ด่วนซ้ำกัน
        \item
          ตัวอย่าง:\\
          \texttt{msgstr "\_About"}\\
          \texttt{msgstr "เ\_กี่ยวกับ"}
      \end{itemize}
  \end{itemize}
\end{frame}

\subsection{การทดสอบ}

\begin{frame}{การทดสอบ}
  \begin{itemize}
  \item
    คอมไพล์:\\
    \texttt{\$ msgfmt -cv th.po}
  \item
    ติดตั้ง MO:\\
    \texttt{\# cp messages.mo /usr/share/locale/th/LC\_MESSAGES/\textit{pkg}.mo}
  \item
    ลองเรียกโปรแกรมดูคำแปล ภายใต้ \texttt{LANG=th\_TH.UTF-8}
  \end{itemize}
\end{frame}


\section{การส่งงาน}

\begin{frame}{การส่งงานผ่านผู้ประสานงาน}
  \begin{itemize}
  \item
    ช่องทาง:
    \begin{itemize}
      \item
        Mailing List:\\
        \texttt{http://groups.google.co.th/group/thai-l10n/}
      \item
        เมลส่วนตัว:\\
        \texttt{thep@linux.thai.net}
    \end{itemize}
  \item
    คำแปลจะถูกตรวจทานและแจ้งการแก้ไขให้ทราบ
    \begin{itemize}
      \item
        ถ้าส่งทาง mailing list จะแจ้งการตรวจทานใน mailing list
      \item
        ถ้าส่งทางเมลส่วนตัว จะแจ้งการตรวจทานทางเมลส่วนตัว (แนะนำสำหรับมือใหม่)
    \end{itemize}
  \end{itemize}
\end{frame}

\end{document}



