Please translate the English text in Russian language on topic cash in hands.After translation of complete article write the meaning of words in box " check these words" translate these list of words in Russian. Create a handbook colorful pdf.
~/
cash in hand university student part-time jobs textbook passage
~/attachments
mkdir -p "/tmp/workspace/cash-in-hand-handbook/src" "/tmp/workspace/cash-in-hand-handbook/output" && fc-match "DejaVu Sans" | head -1
~/cash-in-hand-handbook
~/cash-in-hand-handbook/src/create_handbook.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, KeepTogether
from reportlab.lib.units import cm
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.pdfbase.pdfmetrics import stringWidth
OUT='/tmp/workspace/cash-in-hand-handbook/output/Cash_in_Hand_Russian_Handbook.pdf'
FONT='/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf'
FONTB='/usr/share/fonts/truetype/noto/NotoSans-Bold.ttf'
pdfmetrics.registerFont(TTFont('Noto', FONT))
pdfmetrics.registerFont(TTFont('Noto-Bold', FONTB))
purple=colors.HexColor('#563B91'); lime=colors.HexColor('#B9D839'); pale=colors.HexColor('#F6F8D8'); blue=colors.HexColor('#167FC1'); ink=colors.HexColor('#26313D'); lavender=colors.HexColor('#EEE8F8'); orange=colors.HexColor('#F3983D')
styles=getSampleStyleSheet()
base=ParagraphStyle('base',fontName='Noto',fontSize=10.2,leading=14,textColor=ink,spaceAfter=6)
small=ParagraphStyle('small',parent=base,fontSize=8.7,leading=11.5)
title=ParagraphStyle('title',fontName='Noto-Bold',fontSize=30,leading=35,textColor=colors.white,alignment=TA_CENTER,spaceAfter=9)
sub=ParagraphStyle('sub',fontName='Noto',fontSize=12,leading=16,textColor=colors.white,alignment=TA_CENTER)
h1=ParagraphStyle('h1',fontName='Noto-Bold',fontSize=17,leading=21,textColor=purple,spaceBefore=6,spaceAfter=8)
h2=ParagraphStyle('h2',fontName='Noto-Bold',fontSize=12.5,leading=16,textColor=blue,spaceBefore=5,spaceAfter=5)
translation=ParagraphStyle('translation',parent=base,backColor=colors.white,borderColor=colors.HexColor('#D6C8EF'),borderWidth=.5,borderPadding=8,spaceAfter=10)
def P(txt,style=base): return Paragraph(txt,style)
def section(en,ru):
return KeepTogether([P(en,h2),P(ru,translation)])
def page_num(canvas,doc):
canvas.saveState(); canvas.setFont('Noto',8); canvas.setFillColor(colors.HexColor('#777777'))
canvas.drawCentredString(A4[0]/2,1.05*cm,f'Cash in hand! • Русский перевод • {doc.page}')
canvas.restoreState()
doc=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.35*cm,leftMargin=1.35*cm,topMargin=1.25*cm,bottomMargin=1.55*cm)
story=[]
# cover
cover=Table([[P('Cash in hand!',title)],[P('Перевод статьи на русский язык<br/><font size="11">Работа на неполный рабочий день для студентов университетов</font>',sub)]],colWidths=[18.3*cm])
cover.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),purple),('BOX',(0,0),(-1,-1),0,purple),('TOPPADDING',(0,0),(-1,-1),22),('BOTTOMPADDING',(0,0),(-1,-1),22)]))
story += [cover,Spacer(1,0.45*cm),P('Справочник-перевод',h1),P('Ниже дан полный перевод текста с учебной страницы, а затем перевод и краткое значение слов из блока <b>Check these words</b>.',base)]
story.append(Spacer(1,.3*cm))
story.append(P('Название',h2)); story.append(P('<b>Cash in hand!</b> - <b>Деньги на руках!</b><br/>В контексте текста: возможность зарабатывать и иметь собственные деньги.',translation))
story.append(P('Основной текст',h1))
story += [
section('These days in the USA, around 60% of all university students have a part-time job to help pay for university, or simply to earn some spending money. Students work in the evenings and at weekends. Their average wage is $15 per hour.',
'<b>В наши дни в США</b> около 60% всех студентов университетов имеют работу на неполный рабочий день, чтобы помочь оплатить обучение в университете или просто заработать немного денег на личные расходы. Студенты работают по вечерам и в выходные. Их средняя заработная плата составляет 15 долларов в час.'),
section('ALL KINDS OF JOBS ...<br/>Jobs such as waiting tables, making deliveries, cashier work and working in customer service are always very popular. There are also some jobs available on university campuses, such as a research assistant or a teaching assistant.',
'<b>ВСЕ ВИДЫ РАБОТЫ ...</b><br/>Такая работа, как обслуживание столиков, доставка, работа кассиром и работа в службе обслуживания клиентов, всегда очень популярна. На территориях университетов также есть некоторые вакансии, например должность ассистента-исследователя или ассистента преподавателя.'),
section('CAMP COUNSELLORS<br/>During the summer holiday, a lot of university students choose to work at summer camps as camp counsellors. This way, they can spend time outdoors, organise sports and other activities, and have fun. There are many different kinds of camps, such as sports camps, language-learning camps, and technology camps. Counsellors get free room and board and they also earn a good wage.',
'<b>ВОЖАТЫЕ В ЛАГЕРЕ</b><br/>Во время летних каникул многие студенты университетов выбирают работу в летних лагерях в качестве вожатых. Таким образом они могут проводить время на свежем воздухе, организовывать спортивные и другие мероприятия и весело проводить время. Существует много разных типов лагерей, например спортивные, языковые и технологические лагеря. Вожатые получают бесплатное проживание и питание, а также хорошую заработную плату.'),
section('INTERNSHIPS<br/>For students who know what they want to do when they graduate, a summer internship is ideal. The job can often be low-paid or even unpaid, but it’s great experience in the student’s chosen profession. For example, medical students often work as lab or research assistants, ICT students work as computer lab assistants and law students work as clerks for a law firm. The company sometimes offers the intern a job after they graduate.',
'<b>СТАЖИРОВКИ</b><br/>Для студентов, которые знают, чем хотят заниматься после окончания учёбы, летняя стажировка подходит идеально. Такая работа часто может быть низкооплачиваемой или даже неоплачиваемой, но это отличный опыт в выбранной студентом профессии. Например, студенты-медики часто работают ассистентами в лаборатории или помощниками исследователей, студенты ИКТ работают ассистентами в компьютерных лабораториях, а студенты-юристы работают клерками в юридической фирме. Иногда компания предлагает стажёру работу после окончания учёбы.')]
story.append(PageBreak())
story.append(P('Check these words - Проверьте эти слова',h1))
story.append(P('Слова и выражения из рамки: английское слово, перевод и короткое пояснение.',base))
words=[
('cash','наличные деньги','деньги в банкнотах и монетах'),('part-time','неполный рабочий день; частичная занятость','работа с меньшим числом часов, чем полная занятость'),('earn','зарабатывать','получать деньги за работу'),('average wage','средняя заработная плата','обычный средний размер оплаты труда'),('waiting tables','обслуживание столиков','работа официантом/официанткой'),('delivery','доставка','перевозка товаров или еды получателю'),('cashier','кассир','сотрудник, принимающий оплату'),('customer service','обслуживание клиентов','помощь и поддержка покупателей/клиентов'),('available','доступный; имеющийся','тот, который можно получить или использовать'),('campus','кампус; территория университета','здания и территория учебного заведения'),('camp counsellor','вожатый в лагере','человек, который присматривает за детьми и организует занятия'),('internship','стажировка','временная работа для приобретения опыта'),('profession','профессия','работа, требующая специальной подготовки'),('experience','опыт','знания и навыки, полученные на практике'),('clerk','клерк; служащий','офисный работник, выполняющий административную работу'),('offer','предлагать; предложение','давать возможность получить работу или что-либо другое')]
data=[[P('<b>English</b>',small),P('<b>Русский перевод</b>',small),P('<b>Значение</b>',small)]]
for a,b,c in words:data.append([P(a,small),P(b,small),P(c,small)])
t=Table(data,colWidths=[3.5*cm,5.0*cm,9.8*cm],repeatRows=1)
t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),lime),('TEXTCOLOR',(0,0),(-1,0),ink),('GRID',(0,0),(-1,-1),.35,colors.HexColor('#CFC5DF')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5),('BACKGROUND',(0,1),(-1,-1),colors.white),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,lavender])]))
story.append(t)
story.append(Spacer(1,.3*cm))
story.append(P('Полезное выражение',h2)); story.append(P('<b>room and board</b> - проживание и питание. В тексте: <i>free room and board</i> - бесплатное проживание и питание.',translation))
doc.build(story,onFirstPage=page_num,onLaterPages=page_num)
print(OUT)
python "/tmp/workspace/cash-in-hand-handbook/src/create_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/cash-in-hand-handbook/output/Cash_in_Hand_Russian_Handbook.pdf'; r=PdfReader(p); print('pages:',len(r.pages)); print('chars:',sum(len(x.extract_text() or '') for x in r.pages))"
fc-match -f '%{file}\n' "Noto Sans" && fc-match -f '%{file}\n' "Noto Sans:style=Bold"
~/cash-in-hand-handbook/src/create_handbook.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/cash-in-hand-handbook/src/create_handbook.py'
python "/tmp/workspace/cash-in-hand-handbook/src/create_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/cash-in-hand-handbook/output/Cash_in_Hand_Russian_Handbook.pdf'; r=PdfReader(p); print('pages:',len(r.pages)); print('chars:',sum(len(x.extract_text() or '') for x in r.pages))"
~/cash-in-hand-handbook/output
Cash in Hand Russian Handbook
PDF Document · PDF