From 113dc8ece442fdd5f2c9699573e25a4011f15376 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Sun, 8 Nov 2015 21:21:57 +0000 Subject: [PATCH 1/3] Better language interlinking --- generate-html.py | 202 +++++++++++++++++--------------- resources/{gb.png => en-GB.png} | Bin resources/fr-FR.png | Bin 0 -> 545 bytes resources/{tr.png => tr-TR.png} | Bin src/en-GB/settings.yaml | 1 + src/en-GB/template/layout.html | 3 +- src/fr-FR/settings.yaml | 1 + src/fr-FR/template/layout.html | 3 + src/tr-TR/settings.yaml | 1 + src/tr-TR/template/layout.html | 16 ++- urlmapper.py | 11 +- 11 files changed, 133 insertions(+), 105 deletions(-) rename resources/{gb.png => en-GB.png} (100%) create mode 100755 resources/fr-FR.png rename resources/{tr.png => tr-TR.png} (100%) diff --git a/generate-html.py b/generate-html.py index 31eb2c6..3701fc3 100755 --- a/generate-html.py +++ b/generate-html.py @@ -14,67 +14,6 @@ import urlmapper reload(sys) sys.setdefaultencoding('utf8') -lang = "en-GB" -default_strings = { - 'made_by': '* Made by {manufacturer}', - 'type_hat': '* HAT form-factor', - 'type_classic': '* Classic form-factor', - 'pin_header': '* {} pin header', - 'uses_i2c': '* Uses I2C', - 'wiring_pi_pin': 'Wiring Pi pin {}' -} - -if len(sys.argv) > 1: - lang = sys.argv[1] - -alternate_urls = urlmapper.generate_urls(lang) - -pinout.load(lang) - -overlays = pinout.settings['overlays'] - -strings = pinout.get_setting('strings',{}) - -if type(strings) == list: - _strings = {} - for item in strings: - _strings[item.keys()[0]] = item.values()[0] - strings = _strings - -for key, val in default_strings.items(): - if key not in strings: - strings[key] = val - - -base_url = pinout.get_setting('base_url','/pinout/') # '/pinout-tr/pinout/' -resource_url = pinout.get_setting('resource_url','/resources/') # '/pinout-tr/resources/' -url_suffix = pinout.get_setting('url_suffix','') # '.html' - -template = open('src/{}/template/layout.html'.format(lang)).read() - -pages = {} -navs = {} -select_overlays = [] - -overlays_html = '' - - -if not os.path.isdir('output'): - try: - os.mkdir('output') - except OSError: - exit('Failed to create output dir') -if not os.path.isdir('output/{}'.format(lang)): - try: - os.mkdir('output/{}'.format(lang)) - except OSError: - exit('Failed to create output/{} dir'.format(lang)) -if not os.path.isdir('output/{}/pinout'.format(lang)): - try: - os.mkdir('output/{}/pinout'.format(lang)) - except OSError: - exit('Failed to create output/{}/pinout dir'.format(lang)) - def cssify(value): value = slugify(value); if value[0] == '3' or value[0] == '5': @@ -356,6 +295,102 @@ def render_nav(url, overlay=None): '''.format(html_odd, html_even) +def get_hreflang_urls(src): + hreflang = [] + for lang in alternate_urls: + if src in alternate_urls[lang]: + url = alternate_urls[lang][src] + hreflang.append(''.format( + lang=lang, + url=url + )) + return hreflang + + +def get_lang_urls(src): + urls = [] + for url_lang in alternate_urls: + if src in alternate_urls[url_lang]: + img_css = '' + if url_lang == lang: + img_css = ' class="grayscale"' + url = alternate_urls[url_lang][src] + urls.append('
  • '.format( + lang=url_lang, + url=url, + resource_url=resource_url, + css=img_css + )) + return urls + + + +''' +Main Program Flow +''' + + +lang = "en-GB" +default_strings = { + 'made_by': '* Made by {manufacturer}', + 'type_hat': '* HAT form-factor', + 'type_classic': '* Classic form-factor', + 'pin_header': '* {} pin header', + 'uses_i2c': '* Uses I2C', + 'wiring_pi_pin': 'Wiring Pi pin {}' +} + +if len(sys.argv) > 1: + lang = sys.argv[1] + +alternate_urls = urlmapper.generate_urls(lang) + +pinout.load(lang) + +overlays = pinout.settings['overlays'] + +strings = pinout.get_setting('strings',{}) + +if type(strings) == list: + _strings = {} + for item in strings: + _strings[item.keys()[0]] = item.values()[0] + strings = _strings + +for key, val in default_strings.items(): + if key not in strings: + strings[key] = val + + +base_url = pinout.get_setting('base_url','/pinout/') # '/pinout-tr/pinout/' +resource_url = pinout.get_setting('resource_url','/resources/') # '/pinout-tr/resources/' +url_suffix = pinout.get_setting('url_suffix','') # '.html' + +template = open('src/{}/template/layout.html'.format(lang)).read() + +pages = {} +navs = {} +select_overlays = [] + +overlays_html = '' + + +if not os.path.isdir('output'): + try: + os.mkdir('output') + except OSError: + exit('Failed to create output dir') +if not os.path.isdir('output/{}'.format(lang)): + try: + os.mkdir('output/{}'.format(lang)) + except OSError: + exit('Failed to create output/{} dir'.format(lang)) +if not os.path.isdir('output/{}/pinout'.format(lang)): + try: + os.mkdir('output/{}/pinout'.format(lang)) + except OSError: + exit('Failed to create output/{}/pinout dir'.format(lang)) + overlays = map(load_overlay,overlays) @@ -381,24 +416,12 @@ for pin in range(1,len(pinout.pins)+1): if pin_url == None: continue - hreflang = [] - - src = 'pin{}'.format(pin) - - for code in alternate_urls: - if src in alternate_urls[code]: - alt = alternate_urls[code][src] - code_lang = code.split('-')[0] + '.' - if code_lang == 'en.': - code_lang = '' - hreflang.append(''.format( - lang=code_lang, - alt=alt, - code=code - )) + hreflang = get_hreflang_urls('pin{}'.format(pin)) + langlinks = get_lang_urls('pin{}'.format(pin)) pin_nav = render_nav(pin_url) pin_html = pinout.render_html(template, + lang_links="\n\t\t".join(langlinks), hreflang = "\n\t\t".join(hreflang), nav = pin_nav, content = pin_html, @@ -420,32 +443,16 @@ for url in pages: content = pages[url]['rendered_html'] nav = navs[url] hreflang = [] + langlinks = [] if url == 'index': - for code in alternate_urls: - code_lang = code.split('-')[0] + '.' - if code_lang == 'en.': - code_lang = '' - hreflang.append(''.format( - lang=code_lang, - alt=alt, - code=code - )) + hreflang = get_hreflang_urls('index') + langlinks = get_lang_urls('index') if 'src' in pages[url]: src = pages[url]['src'] - - for code in alternate_urls: - if src in alternate_urls[code]: - alt = alternate_urls[code][src] - code_lang = code.split('-')[0] + '.' - if code_lang == 'en.': - code_lang = '' - hreflang.append(''.format( - lang=code_lang, - alt=alt, - code=code - )) + hreflang = get_hreflang_urls(src) + langlinks = get_lang_urls(src) if not 'description' in pages[url]: pages[url]['description'] = pinout.settings['default_desc'] @@ -456,6 +463,7 @@ for url in pages: pages[url]['name'] = pinout.settings['default_title'] html = pinout.render_html(template, + lang_links="\n\t\t".join(langlinks), hreflang = "\n\t\t".join(hreflang), nav = nav, content = content, diff --git a/resources/gb.png b/resources/en-GB.png similarity index 100% rename from resources/gb.png rename to resources/en-GB.png diff --git a/resources/fr-FR.png b/resources/fr-FR.png new file mode 100755 index 0000000000000000000000000000000000000000..8332c4ec23c853944c29b02d7b32a88033f48a71 GIT binary patch literal 545 zcmV++0^a?JP)lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Z

    Raspberry Pinout

    diff --git a/src/fr-FR/settings.yaml b/src/fr-FR/settings.yaml index 53a454d..037e3e7 100644 --- a/src/fr-FR/settings.yaml +++ b/src/fr-FR/settings.yaml @@ -5,6 +5,7 @@ default_title: Raspberry Pi GPIO Pinout - Pi 1, B+, Pi 2 title_suffix: " at Raspberry Pi GPIO Pinout" base_url: /pinout/ resource_url: /resources/ +domain: fr.pinout.xyz url_suffix: urls: GND: ground diff --git a/src/fr-FR/template/layout.html b/src/fr-FR/template/layout.html index 6c07810..a8808c9 100644 --- a/src/fr-FR/template/layout.html +++ b/src/fr-FR/template/layout.html @@ -2,6 +2,7 @@ {{title}} + @@ -9,6 +10,7 @@ + {{hreflang}}
    -

    Raspberry Pinout

    +

    Raspberry Pinout

    Raspberry Pi Eklenti kartları ve özellikleri